同じサーバー上に複数のデータベースがあるとします。データベースを選択せずに、単一のクエリを使用して特定のユーザーを検索したい。私は、特定のユーザーがどのデータベースに属しているかを知りたがっています。出来ますか?異なるデータベース内の特定のユーザーを検索したい
0
A
答えて
0
これはどうですか?
declare @dbs varchar(500),
@db int,
@dbname varchar(500),
@sql nvarchar(500),
@username varchar(500)
declare C cursor for select name from sysdatabases
open C
fetch C into @dbname
set @dbs = ''
set @username = '<the user you are looking for>'
while @@FETCH_STATUS = 0
begin
set @sql = N'select @db=count(*) from ' + @dbname + '.dbo.sysusers where name = ''' + @username + ''''
exec sp_executesql @sql, N'@db int output', @db output
if @db > 0
set @dbs = @dbs + @dbname + ', '
fetch C into @dbname
end
close C
deallocate C
select @dbs
私はあなたを探しているユーザーが存在するすべてのデータベースのカンマ区切りのリストを提供します。 その後、このクエリを適合させることができます。単なるヒントです。
"特定のユーザーを検索する" - SQL Serverアカウント、または "ユーザー"テーブルの行?明らかにする。 –
私はユーザーに関するすべての詳細を格納する複数のデータベースを持っています。今のシナリオは私が名前と姓、電子メールIDのようなユーザー情報しか持っていないときに、ユーザーから要求があったときです。今私は私が同じサーバー上に存在するすべてのデータベースからユーザーを検索する必要があります。ユーザーはどのデータベースに属しています。 –
次に、すべての異なるデータベースを反復処理できるストアドプロシージャが必要です。これはうまくいくが、データベースを移行したり、新しいデータベースを追加しなければならない場合は、これは貧弱な設計である。同じユーザー名が2つのデータベースで使用されている場合 - あなたは嫌です。 –