У меня проблема, аналогичная этому вопросу: ПОПРОБУЙТЕ CATCH со связанным сервером в SQL Server 2005, не работает
Я запускаю эту попытку:
Declare @command nvarchar(100)
SET @command = 'SELECT column FROM table'
BEGIN TRY
BEGIN TRY
exec ' + @Server_Name + @DB_name + '.dbo.sp_executesql @command
END TRY
BEGIN CATCH
PRINT EXCEPTION
END CATCH
Я не думаю, что могу использовать RAISEERROR
, потому что я не запускаю свою собственную хранимую процедуру, я запускаю только простой оператор выбора. Я пытался использовать @@ERROR
, но это также не работает на связанном сервере. Поскольку ошибка, которую я получаю, меньше 20, я столкнулся с этой проблемой:
Если удаленная хранимая процедура вызывает RAISERROR с серьезностью менее 20, а удаленная хранимая процедура находится в пределах блока TRY на локальном сервере, RAISERROR не вызывает передачу управления блоку CATCH конструкции TRY…CATCH.
http://msdn.microsoft.com/en-us/library/ms191515.aspx
Я нашел этот вопрос: Как перехватить сообщение об ошибке возвращен со связанного сервера?, на который также нет ответа.