2013-04-10 75 views
1

我正在使用SQL2008R2并且有一个大的存储过程,其中包含一段SQL,它将一条记录插入到LINKED服务器(也称为SQL2008R2)。我希望能够继续使用存储过程,如果链接服务器发生故障,不可用等。错误陷阱SQL语句链接服务器

要做到这一点,最好的方法是什么?可以提供一个例子吗?

IF @InsertToLinkServer = 1 
BEGIN 
INSERT INTO [Server].[Database].[dbo].[Table] 
(field1) VALUES (value1) 
END 

ContinueHereifFailed: 
Other sql statements.... 
+0

哪个RDBMS和版本? SQL Server?我想你会想为你的RDBMS搜索try/catch等价或异常处理。 – 2013-04-10 13:06:01

+0

我编辑了我的文章。我尝试了TRY ... CATCH,但它仍然没有恢复其余的陈述。 – user2238205 2013-04-10 13:09:57

+0

类似的帖子:http://stackoverflow.com/questions/2503607/try-catch-with-linked-server-in-sql-server-2005-not-working – 2013-04-10 13:20:03

回答

0

尽量使用动态SQL包裹在try/catch块

DECLARE @dsql nvarchar(max)   
BEGIN TRY 
    SET @dsql = 'INSERT [Server].[Database].[dbo].[Table](field1) VALUES (value1)' 
    EXEC sp_executesql @dsql 
END TRY 
BEGIN CATCH 
    PRINT 'Error' 
END CATCH