[英]SQL Server 2005 How to ignore errors during Create Procedure
我需要在SQL Server 2005中创建一个存储过程。在该过程中的某个地方,我必须加入一个表,该表在测试环境中不存在,但在实时环境中(在链接服务器中的数据库中)。 我不会在测试环境中运行该过程,但是我需要它存在才能在应用程序中创建ORM代码。
自然,SQL Server会引发错误“无法在sys.servers中找到服务器'xxx'。请验证是否指定了正确的服务器名称。如有必要,执行存储的过程sp_addlinkedserver,以将服务器添加到sys.servers。”。 但是,我知道我无法将此服务器添加到测试环境中,因为无法从外部访问它。
因此,我的问题是,如何通过忽略错误来创建存储过程? 有办法吗?
这是一个旧线程,但是如果其他人遇到相同的问题,这是另一个解决方案:
您可以通过文本获取服务器,过程将通过。
create proc test
as
declare @myserver varchar(50) = '[myserver\myinst]'
exec('select * from '+@myserver+'.dbo.table')
这样,proc可以在任何环境下编译,但只能在生产环境中成功运行
如果确定一切正确,并且此过程在实时环境中可以正常工作,则使用sp_addlinkedserver
创建一个伪造的链接服务器。
我的意思是,如果过程主体包含名为test_linked
的链接服务器,并且如果找不到,则它将引发错误。
使用sp_addlinkedserver
并创建一个伪造的名为test_linked
链接服务器,该服务器指向您的测试环境甚至实时环境。 这将解决这一问题的原因,它会尝试检查命名的链接服务器是否test_linked
不存在中sys.servers
或没有,但除非你正在运行的实际链接的服务器将不被访问的过程(据我所知)。
正如亚伦·伯特兰德(Aaron Bertrand)在评论中提到的那样,使用synonym
进行synonym
将是一种更为简洁的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.