时间:2021-07-01 10:21:17 帮助过:10人阅读
CREATE DATABASE TEST USE TEST /*===================================================== 相关错误消 息如下: ERROR_NUMBER() 返回错误号。 ERROR_SEVERITY() 返回严重性。 ERROR_STATE() 返回错误状态号。 ERROR_PROCEDURE() 返回出现错误的存储过程或 触发器的名称。 ERROR_LINE() 返回导致错误的例程中的行 号。 ERROR_MESSAGE() 返回错误消息的完整文本。 ========================================================*/ CREATE TABLE LogTable ( ID int identity(1,1),--错误序号 ErrorNumber int,--错误号 ErrorSeverity int,--严重性 ErrorState int,--错误状态号 ErrorProducure varchar(200),--出现错误的存储过程或 触发器的名称 ErrorLine int,--导致错误的例程中的行号 ErrorMessage varchar(200)--错误消息的完整文本 ) --===============除数不为0的异常捕获=================-- IF EXISTS (SELECT * FROM sysobjects WHERE id=OBJECT_ID(N‘getWrong‘) AND xtype=‘P‘) DROP PROC getWrong go CREATE PROC getWrong AS BEGIN -----------------制造异常 BEGIN TRY SELECT 1/0; -----------------捕获异常 END TRY BEGIN CATCH INSERT INTO LogTable values(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(), ERROR_LINE() ,ERROR_MESSAGE()) END CATCH END --执行存储过程 EXEC getWrong --查看日志表 select * from LogTable --查看系统日志表 SELECT * FROM sys.messages WHERE message_id=8134 AND language_id=2052
日志表如下:
系统日志表如下:
从上述2个我们卡可以看出,在系统日志表中我们只可以看到错误的信息,但是不能具体定位到是哪一个具体的存储过程执行后出现的错误。
SQLServer异常捕获
标签:server state var mamicode val rom roc messages ESS