SQL server异常

异常捕捉

错误信息的返回,在网上找的记录一下

begin try
--...sql语句块
end try
begin catch 
--...sql语句块
ERROR_NUMBER() --返回错误号。 
ERROR_SEVERITY() --返回严重性。 
ERROR_STATE() --返回错误状态号。 
ERROR_PROCEDURE() --返回出现错误的存储过程或触发器的名称。 
ERROR_LINE() --返回导致错误的例程中的行号。 
ERROR_MESSAGE() --返回错误消息的完整文本。 该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。
end catch

例子:

1、创建一个捕捉异常的表

create table LogTable
( 
  ID              int identity(1,1),--错误序号
  ErrorNumber     int,--错误号
  ErrorSeverity   int,--严重性
  ErrorState      int,--错误状态号
  ErrorProducure  varchar(200),--出现错误的存储过程或 触发器的名称
  ErrorLine       int,--导致错误的例程中的行号
  ErrorMessage    varchar(200)--错误消息的完整文本
)

2、创造一个异常

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

系统日志表执行如下:
SQL server异常_第1张图片
日志表执行如下:
SQL server异常_第2张图片

你可能感兴趣的:(SQL,Server异常信息)