我在SQL 2005服務器上有很多數據庫。 有一個名爲'siteadmin'的主數據庫,它有一個'PROJECTS'表,其中有一個列'DB_NAME'列出了其他數據庫的名稱。一個表中的數據庫列表,在一個SQL查詢中從這些數據庫查詢表?
我需要遍歷每個數據庫的名稱,對每個數據庫中存在的名爲'BUG'的表執行count和max查詢。
這是我想出了迄今爲止最好的:
USE siteadmin
DECLARE @dbname VARCHAR(50)
DECLARE @iRowCount INT
SET @iRowCount = 0
WHILE @iRowCount < (SELECT COUNT(*) FROM PROJECTS)
BEGIN
SELECT @dbname = DB_NAME FROM PROJECTS WHERE PROJECT_ID = @iRowCount
USE @dbname
select
SQ_SEQ_VALUE,
(select count(BG_BUG_ID) from td.BUG) TotalBUGs,
(select max(BG_BUG_ID) from td.BUG) MaxBUGID
from td.SEQUENCES
WHERE sq_seq_name='BUG'
SET @iRowCount = @iRowCount + 1
CONTINUE
END
它未能在「使用@dbname」語句。
每個數據庫都有相同的'BUG'表,我需要獲取最大錯誤ID和實際錯誤數量。 所以我需要一個像列表來結束:
SQ_SEQ_VALUE, TotalBUGs, MaxBUGID
dbname1 123 150 170
dbname2 165 165 165
dbname3 176 176 176
我有一種感覺,我曾經在一個完全錯誤的方向走了。 有人能幫忙嗎?
`USE`需要一個真正的數據庫名。它不能使用變量。不幸的是,這意味着你的代碼中有一些動態的SQL。 – 2011-01-31 04:34:09