簡體   English   中英

對所有數據庫中的公用表運行SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM