Как получить статус резервной базы данных, работающей через динамический sql? - PullRequest
2 голосов
/ 09 апреля 2019

Я унаследовал задание SQL Server, которое выполняет хранимую процедуру с динамическими запросами SQL.

Пример:

SET @statement = 'use master
                  ALTER DATABASE '+@database+' SET RECOVERY simple;
                  BACKUP DATABASE '+@database+'
                  TO DISK = ''xyz\'+@database+'.bak''
                  WITH INIT, COMPRESSION
                  WAITFOR DELAY ''00:00:10'';
                  ALTER DATABASE '+@database+'SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
                  DROP DATABASE '+@database+';'

EXEC (@statement);

Если я правильно понимаю, добавлена ​​задержка ожидания, чтобы убедиться, что резервное копирование завершено, прежде чем изменять базу данных. Однако именно здесь я запутался.

Мои вопросы:

  1. Будет ли запрос переходить к / выполнять команду Alter database, даже когда выполняется транзакция резервного копирования?
  2. Как заставить запрос ждать до завершения резервного копирования.

Я пытался найти ресурсы, чтобы понять это, но не смог найти ни одного. Любая помощь приветствуется. Спасибо.

1 Ответ

2 голосов
/ 09 апреля 2019

Выполнение синхронно. Ни один шаг в вашем выполнении не будет выполнен, пока предыдущий не будет завершен, поэтому WAITFOR произойдет после того, как резервное копирование завершится, и после этого произойдет второй ALTER.

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