1 CREATE TABLE ErrorLog( 2 errNum INT, 3 ErrSev NVARCHAR(1000), 4 ErrState INT, 5 ErrProc NVARCHAR(1000), 6 ErrLine INT, 7 ErrMsg NVARCHAR(2000) 8 ) 9 10 CREATE PROCEDURE ProcErrorLog 11 AS 12 BEGIN 13 SELECT 14 ERROR_NUMBER() AS ErrNum,--返回导致运行 CATCH 块的错误消息的错误号。 15 ERROR_SEVERITY()AS ErrSev,--返回导致 CATCH 块运行的错误消息的严重级别 16 ERROR_STATE() AS ErrState,--返回导致 CATCH 块运行的错误消息的状态号 17 ERROR_PROCEDURE() AS ErrProc,--返回出现错误的存储过程名称 18 ERROR_LINE()AS ErrLine,--返回发生错误的行号 19 ERROR_MESSAGE()AS ErrMsg--返回导致 CATCH 块运行的错误消息的完整文本 20 INSERT INTO ErrorLog VALUES( 21 ERROR_NUMBER(), 22 ERROR_SEVERITY(), 23 ERROR_STATE(), 24 ERROR_PROCEDURE(), 25 ERROR_LINE(), 26 ERROR_MESSAGE()) 27 END 28 29 CREATE PROCEDURE TestErrorLog 30 AS 31 BEGIN 32 BEGIN TRY 33 SELECT GETDATE() 34 SELECT 1/0--Evergreen divide by zero example! 35 END TRY 36 BEGIN CATCH 37 SELECT 'There was an error! ' + ERROR_MESSAGE() 38 ProcErrorLog --调用上面的存储过程,保存错误日志 39 RETURN 40 END CATCH; 41 END