我怎样才能捕捉从链接服务器返回的错误信息?
举个例子,如果我在运行SQL Server Management Studio中下面的命令:
BEGIN TRY
exec ('select * from xxx') at my_linked_server
END TRY
BEGIN CATCH
print 'ErrorNumber...'+ CAST(ERROR_NUMBER() as varchar)
print 'ErrorSeverity...'+ CAST(ERROR_SEVERITY() as varchar)
print 'ErrorState...'+ CAST(ERROR_STATE() as varchar)
print 'ErrorProcedure...'+ IsNull(ERROR_PROCEDURE(),'')
print 'ErrorLine...'+ CAST(ERROR_LINE() as varchar)
print 'ErrorMessage...'+ IsNull(ERROR_MESSAGE(),'')
END CATCH
我得到如下结果:
OLE DB提供 “MSDASQL” 链接服务器 “my_linked_server” 返回消息 “[Informix的] [Informix ODBC驱动程序] [Informix的]指定的表(XXX)是未在数据库中。”。 ErrorNumber ... 7215 ... ErrorSeverity 17 ErrorState ... 1 ... ErrorProcedure ... ErrorLine 3的ErrorMessage ...无法远程服务器 'my_linked_server' 上执行语句。
是否SQL Server存储的OLE DB提供程序错误? (这将捕捉到调试这个信息是有用的。)