你好我有一个扩展存储过程发送一条错误消息。来自扩展存储过程的SQL Server捕获错误
srv_sendmsg(pSrvProc, SRV_MSG_ERROR, errorNum, SRV_FATAL_SERVER, 1,
NULL, 0, (DBUSMALLINT) __LINE__,
buff,
SRV_NULLTERM);
我设置的严重性SVR_FATAL_SERVER只是作为一个测试,看看我是否会导致消息抛出一个异常的SQL。
在我的SQL我做:
BEGIN TRY
EXEC dbo.xp_somethingCool
SET @Error = @@ERROR
END TRY
BEGIN CATCH
PRINT 'AN Error occoured!'
SELECT ERROR_NUMBER() AS ErrorNumber
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH
我想,当我的XP发送错误信息的TSQL将捕获错误并选择ERROR_NUMBER和ERROR_MESSAGE。相反,最终发生的事情是,xp发送消息,并且T-SQL继续按照它的方式继续发生。 @@ Error变量也不会被设置。
所以我想知道是否有任何技巧让SQL从XP中捕获错误?
谢谢,劳尔
Microsoft建议您不要再使用'srv_sendmsg'。请参阅http://msdn.microsoft.com/en-us/library/ms164673.aspx上的警告 – Aaronaught 2010-01-07 00:01:40