iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SQL Server中如何实现错误处理
  • 902
分享到

SQL Server中如何实现错误处理

2023-06-30 15:06:50 902人浏览 泡泡鱼
摘要

今天小编给大家分享一下sql Server中如何实现错误处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、SQ

今天小编给大家分享一下sql Server中如何实现错误处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、SQLServer数据库引擎错误

1、查询系统错误信息

SQLServer在每个数据库的系统视图sys.messages中存储系统自定义(Message_id <= 50000)和用户自定义(Message_id>50000)错误消息。

2、系统错误信息的严重性级别

得到的系统错误消息分为不同程度的严重性级别。严重性级别是通过数字来表示的,数字越小表示严重级别越低。反之则严重性越高。严重性较高的错误指示需要尽快解决问题。

二、用try...catch发现错误

try...catch结构       

begin try        要执行的T-SQL代码,一旦错误将传递给catch块进行处理      end try      begin catch        检索和处理错误信息的代码      end catch      正常执行的T-SQL语句
  • try:其中,try块是包含在begin try和end try之间的T-SQL代码段,在该代码段中一旦发生错误将传递给catch块,如果没有错误将直接执行catch块后面的代码。

  • catch:catch块是包含在begin catch和end catch之间的T-SQL代码段,在该代码段中检索和处理try块中的错误信息。

三、捕获错误的系统函数

  • error_number()
    返回错误的ID号,对应sys.messages系统视图中的message_id字段。

  • error_line()
    返回T-SQL代码中错误出现的语句行数。

  • error_message()
    返回将返回给应用程序的消息文本。该文本包括为所有可替换参数提供的值,如长度、对象名或时间。对应sys.messages系统视图中的text字段。

  • error_procedure()
    返回出现错误的存储过程或触发器名称。如果在存储过程或触发器中未出现错误,该函数返回NULL。

  • error_severity()
    返回错误的严重性级别。对应sys.messages系统视图中的severity字段。

  • error_state()
    返回状态

 示例:

begin try    select 1/0end trybegin catch    select         error_number() as 'number',        error_line() as 'line',        error_message() as 'message',        error_severity() as 'severity',        error_state()    as 'state'end catch

输出结果如图所示:

SQL Server中如何实现错误处理

四、用@@ERROR捕获上一条语句的错误

T-SQL还提供了一个简单的系统函数@@ERROR来捕获上一条语句的错误。如果上一条语句执行成功。@@ERROR系统函数将返回0;如果上一条语句生成错误,@@ERROR将返回错误号。

每条语句完成时@@ERROR都会更改。

例如:

select 1/0select * from sys.messages where message_id = @@error and language_id = 2052

 结果如图:

SQL Server中如何实现错误处理

五、用RaiSERROR反馈错误

功能:

将生成的SQLServer引擎错误或警告信息(从sys.messages系统视图获得)反馈到应用程序中。sys.messages系统视图中由SQLServer自身定义的信息,其message_id列的值小于等于5000。

返回用户使用存储过程sp_addmessage创建的自定义消息(存储在系统视图sys.messages中,其message_id大于50000)。

与print语句的区别:

print语句是T-SQL提供的用于反馈信息的语句,print语句只能反馈字符串或字符串表达式的值。

raiserror语句除了print语句的功能外,还支持类似C语言仲printf函数的字符串替换功能。这样可以先在字符串中定义要替换的数据的类型和位置,在输出时自动将字符串内容进行替换。

语法: 

raiserror({ msg_id | msg_str | @local_variable })        { ,severity,state }         [ ,argument [ ,...n ] ] )         [ with option [,...n] ]

参数说明:

  • msg_id:存储在sys.messages系统视图中的错误消息号(message_id)。如果是用户使用as_addmessage系统存储过程自定义的错误消息,其错误号应当大于50000.如果未指定msg_id,则返回一个错误号为50000的错误消息。

  • msg_str:用户自定义消息,msg_str是一个字符串,具有可选的嵌入转换规格。每个转换规格都会定义参数列表中的值。如何格式化并将其置于msg_str中转换规格位置上的字段中,转换规格的格式如下:%[[flag][width][.precision][{h|1}]]type。

  • @local_variable:包含按照msg_str的方式格式化的字符串的任何有效字符串数据类型的变量。@local_variable的数据类型必须为char或varchar,或者必须能够隐式转换为这些数据类型。

  • severity:用户定义的与该消息关联的严重级别。当使用msg_id引发使用sp_addmessage创建的用户定义消息时,paiserror上指定的严重性将覆盖sp_addmessage中指定的严重性。

  • state:状态号,1至少127之间的任意整数。如果在多个位置引发相同的用户自定义错误,则针对每个位置使用唯一的状态好有助于找到引发错误的代码段。

  • argument:用于代替msg_str或对应于msg_id的消息中的定义的变量的参数。可以有0个或多个替代参数,但是替代参数的总数不能超过20个。

  • option:错误的自定义选项。LOG:在SQLServer数据库引擎实例的错误日志和应用程序日志中记录错误;NOWAIT:将消息立即发送给客户端;SETERROR:将@@ERROR值和ERROR_NUMBER值设置为msg_id或50000,不用考虑严重级别。

以上就是“SQL Server中如何实现错误处理”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: SQL Server中如何实现错误处理

本文链接: https://www.lsjlt.com/news/329882.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server中如何实现错误处理
    今天小编给大家分享一下SQL Server中如何实现错误处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、SQ...
    99+
    2023-06-30
  • SQL Server中实现错误处理
    一、SQLServer数据库引擎错误 1、查询系统错误信息 SQLServer在每个数据库的系统视图sys.messages中存储系统自定义(Message_id <= 500...
    99+
    2024-04-02
  • 如何处理SQL SERVER里的错误
    这篇文章主要介绍“如何处理SQL SERVER里的错误”,在日常操作中,相信很多人在如何处理SQL SERVER里的错误问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2024-04-02
  • SQL Server代理:理解SQL代理错误日志处理方法
    SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 如我们在这个系列的前几篇...
    99+
    2024-04-02
  • SQL Server附加数据库时出现错误的处理方法
    目录前言一、如何附加数据库?二、无法升级数据库,出现(539类似版本号不匹配)错误解决办法1.常见的无法附加数据库时,出现的错误2.无法升级数据库的解决办法总结前言 SQL Serv...
    99+
    2022-12-15
    sqlserver附加数据库出错 sqlserver附加数据库出错539 sql2019数据库附加数据出错
  • SQL Server附加数据库时出现错误的处理方法
    目录前言一、如何附加数据库?二、无法升级数据库,出现(539类似版本号不匹配)错误解决办法1.常见的无法附加数据库时,出现的错误2.无法升级数据库的解决办法总结前言 SQL Server 是数据库软件中比较常见且实用的软...
    99+
    2022-12-15
    sqlserver附加数据库出错 sqlserver附加数据库出错539 sql2019数据库附加数据出错
  • SQL Server误设置max server memory的处理方法
    昨天网上一网友说,由于他同事误将“max server memory”设置为10M后,SQL Server数据库登录不了,当时我简单测试了一下,今天有空就顺手将整个过程整理一下,记录在此。 在SSMS的UI...
    99+
    2024-04-02
  • sql server 错误代码17058该如何解决
    本篇文章给大家分享的是有关sql server 错误代码17058该如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最近几天一直在潜心专...
    99+
    2024-04-02
  • jQuery如何实现AJAX调用错误处理
    这篇文章主要为大家展示了“jQuery如何实现AJAX调用错误处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何实现AJAX调用错误处理”这篇文...
    99+
    2024-04-02
  • JavaScript中怎么实现错误处理
    JavaScript中怎么实现错误处理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用 Promise 处理错误为了演示 Promise...
    99+
    2024-04-02
  • SQL Server数据库中怎么清理错误日志
    今天就跟大家聊聊有关SQL Server数据库中怎么清理错误日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。SQL错误日志记录了数据库运行过程的遇...
    99+
    2024-04-02
  • PHP中如何处理图像处理错误?
    PHP中如何处理图像处理错误?图像处理在网页开发中非常常见,而处理图像时经常会遇到一些错误。这些错误包括文件不存在、文件不是图像文件、文件过大等等。在图像处理过程中,我们需要能够准确地捕获这些错误,并对其进行适当的处理。本文将介绍一些在PH...
    99+
    2023-12-09
    错误处理 (Error handling) PHP编程 (PHP programming) 图像处理 (Image Pr
  • PHP中如何处理ORM错误?
    PHP中如何处理ORM错误?在开发中,当使用ORM(对象关系映射)工具来管理数据库时,可能会遇到一些错误。处理这些错误是非常重要的,以确保应用程序能够正常工作并提供正确的错误反馈给用户。本文将介绍如何在PHP中处理ORM错误,并提供具体的代...
    99+
    2023-12-17
    PHP编程 错误处理 ORM错误
  • SQL Server中如何使用row_number实现分页
    这期内容当中小编将会给大家带来有关SQL Server中如何使用row_number实现分页,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、首先是select...
    99+
    2024-04-02
  • cdn错误如何处理
    dn出现502错误的解决方法CDN加速出现502错误,一般是SSL证书错误,可以在网站面板中删除SSL证书后重新添加。或修改本地HOST到服务器ip地址测试。如果检查配置全部都正确的话,就是服务器营运商拦截了。所以网站在工信部备案后,还需要...
    99+
    2024-04-02
  • 如何处理php中DateTime的错误
    这篇文章主要讲解了“如何处理php中DateTime的错误”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何处理php中DateTime的错误”吧!说明DateTime对象可以过程化地写出来...
    99+
    2023-06-20
  • PHP中如何处理并发错误?
    PHP中如何处理并发错误?在开发Web应用程序时,我们经常会遇到并发错误的问题。并发错误是指多个用户同时访问同一段代码时可能出现的问题,如数据库死锁、资源竞争等。为了保证代码的正确性和性能,我们需要采取一些措施来处理并发错误。以下是一些处理...
    99+
    2023-12-18
    异常处理(Exception Handling) 事务(Transaction) 锁定(Locking)
  • PHP中如何处理调试错误?
    PHP中如何处理调试错误?在开发过程中,我们经常会遇到各种各样的错误。调试错误是一个非常有挑战性的任务,因为我们需要找到错误的根本原因并修复它。本文将介绍一些常用的PHP调试技巧和最佳实践,以帮助我们更有效地处理和解决错误。启用错误报告在P...
    99+
    2023-12-09
    调试错误处理
  • PHP中如何处理缓存错误?
    PHP中如何处理缓存错误?缓存是提高Web应用性能的重要手段之一,它能够存储经常访问的数据,并将其提供给后续的请求,从而减轻数据库和服务器的负载。然而,在使用缓存的过程中,可能会遇到一些错误,如缓存丢失、缓存过期等问题。本文将介绍一些常见的...
    99+
    2023-12-09
  • C++ 函数中如何处理错误?
    c++++ 中处理错误的最佳实践包括使用异常处理异常情况,以及使用错误代码表示非致命错误。异常抛出自定义错误信息,通过 try-catch 块进行捕获和处理;错误代码用于轻微错误,在检查...
    99+
    2024-04-23
    c++ 异常处理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作