2

我在 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'.

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

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

4

1 回答 1

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 代理作业活动监视器,作业仍然会在发生这种情况的步骤失败,并且在步骤详细信息中输出所有数据

于 2013-05-27T01:03:54.607 回答