Как изменить БД из скрипта - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть несколько БД на одном 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. Какя могу выполнить скрипт для нескольких баз данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...