我尝试运行SQL查询以针对所有数据库中的公用表填充结果..但是它会导致错误输出
Create table #userid (dbname varchar(50), username varchar(50))
EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''master'',''security'',''tempdb'')
BEGIN
inset into #userid
select ''?'' dbname, username from zuserdb where username IN (''a1234'',''b1234'')
END'
Select * from #userid
DROP table #userid
以上代码没有生成正确的输出..正在生成多行,但用户实际上并不存在于数据库中。任何建议
答案 0 :(得分:0)
不确定为什么会发生这种情况没有记录,但这是一个解决方法。
在表名中使用三部分标识符。考虑zuserdb
存在于所有数据库的dbo
模式中。
CREATE TABLE #userid
(
dbname VARCHAR(50),
username VARCHAR(50)
)
EXEC Sp_msforeachdb
'IF ''?'' NOT IN (''master'',''security'',''tempdb'',''model'',''msdb'')
BEGIN
insert into #userid
select ''?'' dbname, username from ?.dbo.zuserdb where username IN (''a1234'',''b1234'')
END'
SELECT *
FROM #userid
DROP TABLE #userid
添加了model
& msdb
数据库也在排除列表中,因为它们也是系统数据库