EXEC使用数据库

时间:2014-09-02 04:31:35

标签: sql sql-server sql-server-2008 tsql

我编写了一个生成数据库备份文件名的脚本,备份数据库,然后将其还原为具有新数据库名称的副本。该名称基于一些日期/时间数据。

然后我需要在脚本中USE该数据库,然后禁用所有触发器。

但是,这不起作用:

DECLARE @Use VARCHAR(50)
SET @Use = 'USE ' + @NewDatabaseName

EXEC(@Use)

手动运行 - 数据库无法使用'

如何使用变量执行USE语句?

我也尝试了sp_executesql过程,结果相同。数据库没有变化。

DECLARE @sqlCommand nvarchar(1000)
SET @sqlCommand = 'USE ' + @NewDatabaseName

EXECUTE sp_executesql @sqlCommand

看起来我可能需要进入sqlcmd模式?但是真的希望不要。

1 个答案:

答案 0 :(得分:4)

execexecute_sql都在自己的范围内运行。而数据库的变化只会影响自己的范围。所以你可以:

set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)

据我所知,没有办法将当前作用域的数据库上下文更改为变量数据库名称。