2017-01-21 138 views
0

我試圖運行SQL查詢來填充結果對所有數據庫中一個共同的表..但它是導致錯誤的輸出運行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 

上面的代碼ISN」生成正確的輸出..正在生成多行,但用戶實際上不存在於數據庫中。任何建議

+0

sp_MSforeachdb是無證和@prdp它的工作應該被視爲這種 –

+0

任何替代@sql_underworld –

回答

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數據庫也排除列表,因爲這些也是系統數據庫

+0

謝謝 –