有条件地触发:CONNECT语句SQL
问题描述:
注1:从我迄今为止在我的研究中看到的,没有办法完成我期望做的事情,但我希望我错了......有条件地触发:CONNECT语句SQL
注2:这样做的目的是为了消除需要改变到不同的数据库
我写一个SQL脚本(SSMS中)查询之间的连接来查找基于ID号的信息。这个查询可以运行2个数据库(测试数据库和生产数据库)。一个ID号码将在测试数据库或生产中,但不是两者。我想要做的是在SQLCMD模式下(或另一种方法,但我还没有找到)使用CONNECT语句连接到适当的DB。像这样:
:CONNECT /*Testing database name*/
IF NOT EXISTS (SELECT * FROM /*appropriate table*/ WHERE ID = @ID)
:CONNECT /*Production database name*/
/*Continue with the rest of the query*/
理论上,上面的代码将确保我连接到正确的DB(假设ID完全存在)。尽管如此,不管IF EXISTS如何,第二个:CONNECT语句都会激活,导致查询总是针对生产而运行。
有没有办法达到这个目标?先谢谢你!
这不起作用,因为'IF NOT EXISTS'是一个T-SQL语句,而':CONNECT'是一个SQLCMD语句。这些不相关:SQLCMD由SSMS解析器执行,而T-SQL由数据库执行。由于SQLCMD没有条件逻辑,因此您无法在SQLCMD脚本中执行您想要执行的操作。如果数据库在同一个实例上,则使用'USE'(一个T-SQL命令)而不是':CONNECT'。如果他们在不同的实例,你不能从SSMS做到这一点。你必须用适当的参数在外部调用'sqlcmd'。 –