2015-06-04 2 views
0

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

Единственный способ, которым я нашел это EXEC заявление 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, остальные операторы выполняются из данных где скрипт запущен.

+0

Вам нужно добиться этого только в SSMS? – ughai

+0

вы можете использовать ': setvar', который может быть похож на то, что вы хотите достичь [используя этот ответ здесь] (http://stackoverflow.com/a/30479063/4436237) – ughai

ответ

0

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

:setvar database "dbRestoredName" 
use $(database) 
go 
A T-SQL STATEMENT; 
ANOTHER T-SQL STATEMENT; 
Смежные вопросы