2011-03-02 82 views
1

可能重复:
In SQL server is there any way to get the 'use database' command to accept a variable如何使用T-SQL调用exec(@sql)来更改当前数据库?

我们可以通过他们的名字更改数据库是没有问题的,如下

USE master 
GO 

但我需要这一个脚本,并有数据库名称在一个变量中。如何做到这一点?

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

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

有什么可能吗?

回答

5

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

+0

我想改变使用T-SQL数据库上下文没有'GO'命令 - 我已经更新脚本obmit了'go' – 2011-03-03 09:24:21

-2

也许有一个合理的原因,但如果可能的话,我会建议在需要的脚本中按名称命名数据库。例如

databasename.table.owner.field

+0

这是一个不错的工作-周围。尽管如此,我的自动化查询脚本在更改时将不得不替换数据库名称 - 当我的脚本交给团队中的其他开发人员时,这不应该被接受;他们只需输入一次数据库名称,然后点击运行即可查看结果。不管怎么说,还是要谢谢你 – 2011-03-10 04:16:42

相关问题