如何捕获从链接服务器返回的错误消息?
例如,如果我在 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
我得到以下结果:
链接服务器“my_linked_server”的 OLE DB 提供程序“MSDASQL”返回消息“[Informix][Informix ODBC Driver][Informix]指定的表 (xxx) 不在数据库中。”。ErrorNumber...7215 ErrorSeverity...17 ErrorState...1 ErrorProcedure...ErrorLine...3 ErrorMessage...无法在远程服务器“my_linked_server”上执行语句。
SQL Server 是否存储 OLE DB 提供程序错误?(捕获此信息以进行调试很有用。)