如何使用T-SQL调用exec(@sql)来更改当前数据库?

时间:2011-03-02 11:48:16

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

  

可能重复:
  In SQL server is there any way to get the 'use database' command to accept a variable

我们可以通过名称更改数据库没有问题,如下所示

USE master
GO

但是我需要在脚本中使用它并在变量中包含数据库名称。怎么做到这个?

select @cmd = N'use ' + @oldDb  + N';'
exec sp_executesql @cmd

这不起作用 - 当前数据库在执行后保持不变。

有可能吗?

2 个答案:

答案 0 :(得分:5)

显然问题是在动态sql语句中使用GO,因为execute sql不支持多个批处理。请参阅此链接以获取解决方案。 Change Database with Dynamic SQL

答案 1 :(得分:-2)

也许这是有正当理由的,但如果可能,我建议在脚本中按名称命名数据库。例如

databasename.table.owner.field