Создайте команду динамического SQL для включения «USE DATABASE xyz» - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть обширная хранимая процедура, которая создает резервную копию зашифрованной базы данных TDE, восстанавливает ее с новым именем, дешифрует восстановленную базу данных, переводит ее в простой режим, а затем ей необходимо сжать файл журнала.

Когда я добираюсь до части, где мне нужно выдать USE DATABASE xyz;, у меня уже есть временное имя базы данных в переменной, поэтому я пытался использовать следующий код

DECLARE @tempDBName VARCHAR(255)
DECLARE @sqlc NVARCHAR(MAX)

SET @tempDBName = 'xyz_temp'
SET @sqlc = N'USE ' + QUOTENAME(@tempDBName) + ' ;'

EXEC @sqlc

Но я получаю эту ошибку

Имя 'USE [xyz_temp];'не является допустимым идентификатором.

Любой совет с благодарностью.

1 Ответ

0 голосов
/ 21 февраля 2019

Попробуйте:

DECLARE @tempDBName VARCHAR(255)
DECLARE @sqlc NVARCHAR(MAX)

SET @tempDBName = 'master'
SET @sqlc = N'USE ' + QUOTENAME(@tempDBName) + ' ;'

EXEC (@sqlc);

Обратите внимание, что @sqlc в скобках ... Глупый T-SQL

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