Динамический ЕГЭ в t-sql

У меня есть простой скрипт, запущенный из SQL Server Management Studio, который восстанавливает (локально) резервную копию. Как только база данных восстановлена, мне нужно выполнить с ней какую-то операцию.

Единственный способ, который я нашел, - это выполнить оператор sql и добавить имя базы данных, например:

EXEC('USE ' + @dbRestoredName + ' A T-SQL STATEMENT;')
EXEC('USE ' + @dbRestoredName + ' ANOTHER T-SQL STATEMENT;')

Это, очевидно, работает, и нет проблем с небольшими операторами, но вместо этого у меня есть несколько сложных операторов, которые трудно преобразовать в строку, поэтому я хотел бы сделать это:

EXEC ('USE ' + @dbRestoredName);
A T-SQL STATEMENT;
ANOTHER T-SQL STATEMENT;

Но итог вышеизложенного в том, что ЕГЭ неэффективен, если вы знакомы с SQL SERVER Management Studio, остальные операторы выполняются из базы данных, где был запущен скрипт.


person Leonardo    schedule 04.06.2015    source источник
comment
Вам нужно добиться этого только в SSMS?   -  person ughai    schedule 04.06.2015
comment
вы можете использовать :setvar, что может быть похоже на то, чего вы хотите достичь, используя этот ответ здесь   -  person ughai    schedule 04.06.2015


Ответы (1)


Если вы запускаете свой скрипт в SSMS, вы можете использовать режим SQLCMD (меню Query) для скрипта переменной для имени вашей базы данных.

:setvar database "dbRestoredName"
use $(database)
go
A T-SQL STATEMENT;
ANOTHER T-SQL STATEMENT;
person Raj    schedule 04.06.2015