假设我们在同一台服务器上有多个数据库。我想使用单个查询搜索特定用户,而不选择数据库。我只想知道特定用户所属的数据库。可能吗?
答案 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
我给你一个逗号分隔的列表,列出了所在的用户所在的数据库。 之后,你可以采用这个查询,它只是一个提示。