2013-10-31 24 views
0

我在我的SQL中有一些硬编码的数据库值,我需要转换为变量,我已经在地方声明了它们,但是我需要将Production2更改为下面的@Source_Database_Name变量,但是我不知道如何将它放入信息中架构后它没有得到语法错误如何为硬编码数据库声明一个变量?

IF EXISTS(SELECT * FROM Production2.INFORMATION_SCHEMA.COLUMNS 
+0

这只是Transact-SQL存储在.sql文件中吗?因为SSMS中的'sqlcmd'和'sqlcmd mode'允许你使用变量。否则,它是动态的SQL /同义词/链接服务器。如果这些是存储过程并被部署到不同的环境中,您还可以使用类似SQL Server数据工具的东西来管理它们。 SQL Server数据工具包含可在T-SQL中使用的变量。 –

回答

0

我想你可以做到这一点的唯一方法是动态SQL生成(不幸)。实际上有很多原因(从数据库引擎的角度来看)不允许用户以您想要的方式参数化查询。坐在我头上的是,它将无法验证您的查询语法(无法知道您指的是实际存在的内容)。

如果您在谈论“能够针对不同数据库执行同一组SQL”,并且您实际上是通过代码(.NET /任何东西)执行此SQL,那么您可以实现相同结果是通过在连接字符串中指定目标数据库(即通过更改设置数据库的级别 - 不是在[sql]脚本中,而是在某个外部点)。

+0

我同意AlexS。 –