2013-04-10 2 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? Я думаю, вам нужно искать эквивалент try/catch или обработку исключений для вашей РСУБД. –

+0

i editted мой пост. Я попробовал TRY ... CATCH, но он все еще не возобновлялся с остальными утверждениями. – user2238205

+0

Похожие сообщения: http://stackoverflow.com/questions/2503607/try-catch-with-linked-server-in-sql-server-2005-not-working –

ответ

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 
Смежные вопросы