我遇到了与这个问题类似的问题:TRY CATCH with Linked Server in SQL Server 2005 Not Working
我正在运行这个 try catch:
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,所以我遇到了这个问题:
如果远程存储过程调用严重性小于 20 的 RAISERROR,并且远程存储过程的范围在本地服务器上的 TRY 块内,则 RAISERROR 不会导致控制权传递给 TRY...CATCH 构造的 CATCH 块
http://msdn.microsoft.com/en-us/library/ms191515.aspx
我发现了这个问题:如何捕获从链接服务器返回的错误消息?也没有回答。