У меня есть несколько БД на одном SQL-сервере и одном экземпляре, чем у меня какая-то процедура из программного обеспечения 3-го участника, поэтому я не могу их изменить.Теперь я хочу запустить эти процедуры из плана обслуживания (сценария), но я не могу изменить активную БД с помощью команды «use»
Вот пример сценария (это работа на одной БД):
<i>use DB_1
exec spDistinctMask @opMode = 0x08
go
use DB_1
exec spDeleteBinEntries @olderThanXDays = 14
go
</i>
Теперь мне нужно запустить этот сценарий для всех баз данных, поэтому я пытаюсь сделать это:
<i>
DECLARE CUR CURSOR FOR
SELECT name FROM master.dbo.sysdatabases
where name not like 'master' and name not like 'tempdb' and name not like 'model' and name not like 'msdb'
OPEN CUR
PRINT ('******script****** DB: ')
FETCH NEXT FROM CUR INTO @NAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Query = CONCAT('USE ', @NAME);
EXECUTE (@Query);
exec spDistinctMask @opMode = 0x08
PRINT DB_NAME()
EXECUTE (@Query);
exec spDeleteBinEntries @olderThanXDays = 7
FETCH NEXT FROM CUR INTO @NAME
END
PRINT ('end of script******')
CLOSE CUR
DEALLOCATE CUR
</i>
Но кажется, что выбранная БД - это DB_1, даже если на сервере есть DB_2, а также DB_3. Какя могу выполнить скрипт для нескольких баз данных?