我正在處理大量相同的數據庫,因此我正在使用sp_MSforeachdb過程,以便可以從表中檢索信息。sp_MSforeachdb查詢幫助
我遇到的問題是盒子上還有其他數據庫沒有表格,所以我拋出無效的對象錯誤。
這是我目前所擁有的,我過濾LoginDatabase,因爲它有相同的表,但我不想在查詢中。
我的問題是,我怎麼能限制它到我想從中獲取信息的表的數據庫。
SET NOCOUNT ON
CREATE TABLE #tmpData
(
DbName VARCHAR(30),
DbVersion FLOAT
)
exec sp_msforeachdb @command1='
USE ?;
INSERT INTO #tmpData
SELECT ''?'', (SELECT Setting
FROM ?.dbo.gl_SysParams
WHERE Keyword = ''DatabaseSchema'')
FROM sysobjects o
WHERE type=''U''
AND [name] = ''gl_SysParams''
AND ''?'' <> ''LoginDatabase'' ORDER BY [name]
'
SET NOCOUNT OFF
SELECT DbName, DbVersion FROM #tmpData ORDER BY DbName
DROP TABLE #tmpData
因此,將sp_MSforeachtable包裝在sp_MSforeachdb的@ command1中? – 2010-10-01 09:02:15
@Sres - yep。引號可能有點令人困惑,當然,你需要爲其中一個存儲過程指定@replacechar – 2010-10-01 09:06:26
現在,我遇到了模糊列名'name'的問題,我已將別名中的sysobjects別名上面,@where和什麼表是? – 2010-10-01 09:07:53