私は同じデータベースをたくさん使用しているので、テーブルから情報を取得できるように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