繁体   English   中英

SQL Server 2005如何在创建过程中忽略错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM