[英]Running SQL query for common table in all databases
我正在嘗試運行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
上面的代碼沒有生成正確的輸出..正在生成多行,但是用戶實際上並不存在於數據庫中。 有什么建議么
不知道為什么會發生這種情況,但沒有記錄,但這是一種解決方法。
在表名中使用三部分標識符。 考慮到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
數據庫,因為它們也是系統數據庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.