【发布时间】:2014-09-02 14:18:49
【问题描述】:
我编写了一个脚本,它生成一个数据库备份文件名,备份数据库,然后用新的数据库名将其还原为副本。该名称基于一些日期/时间数据。
然后我需要在脚本中USE 那个数据库,然后禁用所有触发器。
但是,这不起作用:
DECLARE @Use VARCHAR(50)
SET @Use = 'USE ' + @NewDatabaseName
EXEC(@Use)
手动运行 - 数据库没有被“使用”。
如何使用变量执行USE 语句?
我也尝试过sp_executesql proc,结果相同。数据库没有改变。
DECLARE @sqlCommand nvarchar(1000)
SET @sqlCommand = 'USE ' + @NewDatabaseName
EXECUTE sp_executesql @sqlCommand
看来我可能需要进入 sqlcmd 模式?不过,真的希望不要。
【问题讨论】:
-
你需要使用 sp_executesql
-
我在看那个,但它似乎需要一些参数,我正在努力理解在“USE”语句的情况下它们会是什么。
-
只是想知道:您的
based on some date/time data数据库名称是否超过 46 个字符? -
不,数据库名称是 8 个字符长。
-
在
USE <dbname>之后使用GO?
标签: sql sql-server sql-server-2008 tsql