条件触发器:CONNECT语句SQL
注1:从目前为止我在研究中看到的情况来看,没有办法完成我想要做的事情,但我希望我错了 注2:这样做的目的是消除更改不同数据库查询之间连接的需要 我正在编写一个SQL脚本(在SSMS中)来根据id号查找信息。此查询可以针对两个数据库(测试数据库和生产数据库)运行。id号将出现在测试数据库或产品中,但不能同时出现在两者中。我想做的是在SQLCMD模式下使用:CONNECT语句(或者一种替代方法,但我还没有找到)连接到适当的数据库。像这样:条件触发器:CONNECT语句SQL,sql,sql-server,ssms,sqlcmd,Sql,Sql Server,Ssms,Sqlcmd,注1:从目前为止我在研究中看到的情况来看,没有办法完成我想要做的事情,但我希望我错了 注2:这样做的目的是消除更改不同数据库查询之间连接的需要 我正在编写一个SQL脚本(在SSMS中)来根据id号查找信息。此查询可以针对两个数据库(测试数据库和生产数据库)运行。id号将出现在测试数据库或产品中,但不能同时出现在两者中。我想做的是在SQLCMD模式下使用:CONNECT语句(或者一种替代方法,但我还没有找到)连接到适当的数据库。像这样: :CONNECT /*Testing database na
: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是否存在,第二个:CONNECT语句都会激活,从而导致查询始终针对生产运行
有没有办法实现这个目标?提前谢谢你 由于我不知道需要什么来消除连接更改,您是否考虑过将这两个表连接起来,然后从那里获得所需的结果?如果返回的表是所需的流,则可以检查该id是否存在 你也可以查一下。
如果有帮助,请告诉我 这不起作用,因为
IF NOT EXISTS
是一个t-SQL语句,而:CONNECT
是一个SQLCMD语句。这些是不相关的:SQLCMD由SSMS解析器执行,而T-SQL由数据库执行。因为SQLCMD没有条件逻辑,所以无法执行SQLCMD脚本中尝试执行的操作。如果数据库位于同一实例上,请使用use
(T-SQL命令)而不是:CONNECT
。如果它们位于不同的实例上,则无法从SSM执行此操作。您必须使用适当的参数从外部调用sqlcmd
。