如何从链接的服务器查询中获取完整的错误消息?

时间:2013-05-19 22:42:09

标签: tsql try-catch linked-server

我在MySQL服务器上创建了一个程序,由于主键违规,它总是会抛出错误,这可以通过链接服务器从Microsoft SQL Server调用:

EXEC ('CALL temp_test;') AT LINKSVR;

当这个被调用时,我得到这个完整的消息:

OLE DB provider "MSDASQL" for linked server "LINKSVR" returned message "[MySQL][ODBC 5.1 Driver][###########]Duplicate entry '1' for key 'PRIMARY'".
Msg 7215, Level 17, State 1, Line 1
Could not execute statement on remote server 'LINKSVR'.

现在我要做的是把它放在TRY...CATCH...中并将错误输出到表中,但是当我使用ERROR_MESSAGE()时,我得到了最后一行

有没有办法获取返回的链接服务器消息?

1 个答案:

答案 0 :(得分:0)

好的,得到了​​一个好的工作,它没有输出到表但我相信你可以在某处记录

有效地你这样做

BEGIN TRY
    EXEC ('CALL sp_test;') AT LINKSVR;
END TRY
BEGIN CATCH
    RAISERROR(N'Error called on Linked Server',16,1)
END CATCH

RAISERROR将输出自定义错误和从链接服务器返回的消息,但是来自链接服务器的消息仍然无法存储在表中,但使用SQL Server代理作业活动监视器,该作业将在发生这一步骤时仍然失败,并且在步骤细节中输出所有数据