`

[SQLServer]错误处理

阅读更多
一.RAISERROR
RAISERROR( {msg_id | msg_str}{,severity, state}
           [, arg[,...n ]] )
           [WITH option [,...n ]]
--msg_id: sqlserver错误消息表中存在的系统和用户定义的消息
--msg_str: 消息字符,可定义文字内的参数
  --% [[flag] [width] [. precision] [{h | l}] ] type
  --flag: 一个代码,用于确定输入值的对齐方式和间距
    ---(减号): 左对齐
    --+(加号): 在值前显示+或-号
    --0: 在输出前添加前缀0
    --#: 依赖于格式化方式,在非零值前添加0,0x或0X
    --(空白): 在前面添加空白前缀 
  --width: 输出的最小宽度
  --precision: 从字符串值的参数值中得到的所使用的字符的最大字符数
  --h: 字符类型
    --d或i: 有符号整数,对于整数
    --o: 无符号八进制数,对于无符号八进制数
    --s: 字符串,对于字符串
    --u: 无符号整数,对于无符号整数
    --x或X: 无符号十六进制数,对于无符号十六进制数
    --p: 对于指针

--severity: 错误严重级别,从无害的1到致命的25
  --2-14常规
  --15警告
  --16以上表示错误
  --20-25严重错误
  --若为11以上,@@ERROR的值被设置为RAISERROR中的消息号
--state: 状态,一般设置为1



WITH选项:
    LOG: 将错误消息放入到windows错误日志中(注意windows错误日志可能被填满)
    NOWAIT: 直接将错误发送给客户
    SETERROR: 只在消息字符串中将错误号复位到50000


--系统存储过程sp_addmessage可用于创建全局的错误消息
sp_addmessage [@msgnum = ] msg_id,          --消息号,通常大于50000
              [@severity = ] severity,      --范围1-25
              [@msgtext = ] 'msg'           --输出的消息
              [, [@lang = ] 'language']     --如果需要定义错误消息的语言
              [, [@with_log = ] 'with_log'] --若使用windows错误消息,可设为true
              [, [@replace = ] 'replace']   --替换一条现有的消息


sp_addmessage 50001,1,'message is ...%010u',@replace='replace'
raiserror(50001,11,1,243)
--输入为
--Msg 50001, Level 11, State 1, Line 1
--message is ...0000000243



二.@@ERROR: 全局变量

最基本的错误处理方式。
SELECT 100/0     --无
SELECT @@ERROR   --8134
SELECT @@ERROR   --0,执行过之后就是0了

RAISERROR ( 50001, 1, 1 )
SELECT @@ERROR   --0,因为严重级别小于11

RAISERROR ( 50001, 11, 1 )
SELECT @@ERROR   --50001,因为严重级别大于等于11

--建议使用TRY...CATCH


三.TRY...CATCH: 可以嵌套
DECLARE @Pv int
BEGIN TRY
    SELECT @Pv = 'abc'
END TRY
BEGIN CATCH
    DECLARE @msg varchar(100)
    SELECT @msg = LTRIM(STR(ERROR_LINE()))+','+ LTRIM(STR(ERROR_NUMBER())) + ',' + ERROR_MESSAGE()
    RAISERROR(@msg,11,1)
END CATCH
--Msg 50000, Level 11, State 1, Line 8
--3,245,Conversion failed when converting the varchar value 'abc' to data type int.

--ERROR_LINE(): 物理行号
--ERROR_NUMBER(): 同消息相关联的消息号
--ERROR_MESSAGE(): 消息文本
--ERROR_PROCEDURE(): 若在存储过程或触发器中使用,将包含其名称,一般使用输出NULL
--ERROR_SEVERITY(): 错误的严重级别数值
--ERROR_STATE(): 错误数字状态值
--注意在try...catch中使用临时表时产生延迟名称解析(deferred name resolution)问题



分享到:
评论

相关推荐

    sql server 2812错误处理

    ### SQL Server 2812错误处理 #### 一、问题背景 在SQL Server数据库管理过程中,用户可能会遇到“错误2812:未能找到存储过程'master.dbo.xp_fileexist'”的问题。该问题通常发生在尝试还原数据库时,其原因是系统...

    SQL Server错误代码大全.doc

    SQL Server 错误代码大全 概述: SQL Server 错误代码大全是一份详细的数据库错误代码大全,涵盖了 SQL Server 中各种可能的错误代码和解决方法。该大全旨在帮助开发者和 DBA 快速地定位和解决 SQL Server 中出现的...

    sqlserver错误日志

    本文将对SQL Server错误日志中的“错误701”进行深入解析,并探讨其背后的原因以及可能的解决方案。 #### 错误701的基本含义 错误701的完整描述为:“系统资源池'default'中没有足够的系统内存来运行此查询。”该...

    SqlServer 错误代码及说明

    对sqlserver数据库中错误的说明 包括 错误的代码和错误的中文说明,有利于程序错误的处理

    sqlserver驱动2012版

    4. 具有错误处理和诊断能力,可以获取详细的数据库连接和操作信息。 5. 支持SQL Server的高级特性,如XML数据类型、分区视图和Service Broker。 在实际应用中,安装SQL Server Native Client 2012驱动后,Navicat...

    SQL Server 错误代码大全

    "SQL Server 错误代码大全" SQL Server 错误代码大全是指SQL Server数据库管理系统中出现的各种错误代码及其对应的错误信息。这些错误代码涵盖了SQL Server的各个方面,包括系统错误、存储错误、网络错误、打印机...

    SQL Server Native Client 10.0

    6. **错误处理和调试**:在使用Navicat和SQL Server Native Client 10.0时,可能会遇到各种连接或查询问题。正确处理错误和日志记录是解决问题的关键。Navicat通常会提供详细的错误信息,帮助诊断问题。 7. **备份...

    SQL server Native Client 10.0

    对于开发人员,SQL Server Native Client 10.0提供了丰富的错误处理和诊断工具,包括跟踪和日志记录功能,帮助调试和优化应用程序的数据库访问性能。 总结来说,SQL Server Native Client 10.0是64位环境下的重要...

    java连接网络SQLSERVER2000主法及错误处理

    ### Java连接SQL Server 2000方法及错误处理 #### 一、引言 在进行Java应用程序开发过程中,连接数据库是一项基本且重要的任务。本文将详细介绍如何使用Java连接SQL Server 2000数据库,并解决连接过程中可能出现...

    Delphi SQL Server数据库备份程序_delphi_SQL_ServerDelphi_sqlserver_

    在描述中提到的“sqlserver 程序化备份”,意味着我们需要在Delphi应用程序中编写代码来执行SQL Server的备份任务。这可以通过以下步骤实现: 1. 连接数据库:使用ADOConnection组件,配置适当的连接字符串(如...

    SQL Server Native Client 10.0 驱动

    SQL Server Native Client 10.0 的OLE DB提供者支持多种特性,如事务、并发控制、数据类型转换和错误处理。通过OLE DB,开发者可以直接操作数据库对象,如表、视图、存储过程,并能利用SQL Server特有的特性,如XML...

    用SQL Server数据库处理数据层错误

    本篇文章主要探讨了如何在SQL Server环境下处理数据层错误,特别关注了T-SQL中的错误处理技术和事务管理。 首先,事务是数据库操作的核心组成部分,确保数据一致性。在SQL Server中,使用`BEGIN TRANSACTION`, `...

    深入理解SQL Server 中的错误处理

    为了能够掌握在SQL Server 2000中错误处理是如何工作的,必须首先要理解数据库事务的概念。在数据库术语中,事务就是指作为一个单独的工作单位出现的一系列语句。举个例子来 说,假设你有三个语句要执行,事务就可以...

    sql server 事务处理

    在SQL Server中,事务处理是数据库操作的核心组成部分,它确保数据的一致性和完整性。事务是一组逻辑操作,这些操作被视为单个单元,要么全部完成,要么全部回滚,以维护数据库的ACID(原子性、一致性、隔离性和持久...

    sqlServer的jar包

    这些类通常涉及到网络通信、错误处理、安全性和性能优化等方面。它们是驱动程序的核心组成部分,帮助处理与数据库服务器之间的通信细节。 3. **mssqlserver.jar**: 这个JAR包是针对SQL Server特定功能的扩展,它...

    sql server安装指南

    SQL Server是一款由微软开发的大型关系型数据库管理系统(RDBMS),广泛应用于企业级应用中。安装SQL Server是进行数据库部署、管理和维护的第一步,其安装方式多样,包括自定义安装和一键安装等。本文档旨在提供一...

    Spotlight on SQL Server

    6. **日志分析**:对于SQL Server的日志文件,Spotlight可能有专门的分析工具,帮助理解错误信息,追踪问题源头,从而提高故障排查效率。 7. **安全性管理**:此工具可能包含对SQL Server安全性的监控,比如审计...

    使用flink-connector-sqlserver-cdc 2.3.0把数据从SQL Server实时同步到MySQL中

    - 为了确保数据的完整迁移,你可能需要配置相应的错误处理策略,如重试、回退或跳过有问题的数据。 5. **性能优化**: - 考虑调整Flink作业的并行度、批处理窗口大小、缓冲区设置等参数,以优化性能。 - 监控SQL...

    SQLserver驱动jar包

    它可能包含了网络通信、错误处理、数据转换等基础功能。在连接SQL Server时,这些底层支持对于实现高效的数据库交互至关重要。 2. `smsqlserver.jar`:这个jar文件是SQL Server驱动的核心部分,提供了对SQL Server...

    SQL SERVER 双引号问题处理

    ### SQL Server 双引号问题处理 在进行数据库操作时,我们经常需要用到各种各样的字符来构建复杂的查询语句。其中,SQL Server 使用单引号(' ')来标识字符串,这是一种约定俗成的做法。然而,在某些情况下,比如...

Global site tag (gtag.js) - Google Analytics