У меня много баз данных на сервере SQL 2005.Существует основная база данных под названием «siteadmin», в которой есть таблица «PROJECTS», в которой есть столбец «DB_NAME», в котором перечислены имена других баз данных.
Мне нужно перебирать каждое из этих имен баз данных, выполняязапрос count и max для таблицы с именем 'BUG', которая существует в каждой базе данных.
Это лучшее, что я когда-либо придумал:
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
Сбой при использовании USEОператор @dbname.
Каждая из баз данных имеет одну и ту же таблицу «BUG», и мне нужно получить максимальный идентификатор ошибки и количество фактических ошибок.Поэтому мне нужно закончить со списком вроде:
SQ_SEQ_VALUE, TotalBUGs, MaxBUGID
dbname1 123 150 170
dbname2 165 165 165
dbname3 176 176 176
У меня такое ощущение, что я пошел в совершенно неверном направлении.Кто-нибудь может помочь?