想要在不同的数据库中搜索特定用户

时间:2016-04-04 12:32:48

标签: sql sql-server sql-server-2012

假设我们在同一台服务器上有多个数据库。我想使用单个查询搜索特定用户,而不选择数据库。我只想知道特定用户所属的数据库。可能吗?

1 个答案:

答案 0 :(得分: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

我给你一个逗号分隔的列表,列出了所在的用户所在的数据库。 之后,你可以采用这个查询,它只是一个提示。