2015-06-04 17 views
0

我有一個簡單的腳本,從SQL Server Management Studio啓動,它可以恢復(本地)備份。 一旦數據庫恢復,我需要對它執行一些操作。t-sql中的動態USE

我發現的唯一辦法就是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模式(查詢菜單)爲您的數據庫名稱編寫一個變量的腳本。

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