微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 如何分配SqlException编号

sqlException具有属性Number.

然后有这个:http://msdn.microsoft.com/en-us/library/cc645603.aspx

这个:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

它似乎是一个或另一个

题:

怎么决定哪个?

要求的原因:

我需要捕获某些sqlExceptions并根据Number属性决定如何处理它们但我不知道当系统使用来自两者的消息时我应该看哪个列表,我不知道是什么标准用于选择.

例如:

> 53号 – 来自服务器错误消息列表(两者都存在)
>数字10054 – 来自系统错误消息列表(两者都存在)
> Number -1 – 来自服务器错误消息列表(仅存在于服务器列表中)
> 121号 – 来自系统错误消息列表(两者都存在)
……

解决方法

该理论认为是sql错误号,例如.服务器端 ERROR_NUMBER().换句话说,第一个列表.

但是,sqlClient报告的一些异常发生在客户端,而不是服务器端.一个典型的例子是错误,如连接到服务器失败,因为你没有连接,没有服务器端错误可言.例如,一个错误的服务器名称(在DNS中不解析),在这种情况下,InnerException将指向Win32Exception,其值为NativeErrorCode ERROR_BAD_NETPATH.在这种情况下,53系统错误代码将报告为sqlException错误号.

在其他情况下,sqlClient报告的错误套接错误,如突然断开连接.同样,没有“服务器端”错误可言,并且sqlException将包含类型为SocketException的InnerException(Win32Error的子类)和一个众所周知的WSA错误号的NativeErrorCode,如WSAECONNRESET.在这种情况下,sqlException.ErrorNumber将是10054,但是来自WSA范围的是10054,而不是来自sql Server错误范围的10054.我知道…

那你该怎么办?确保检查InnerException,如果是Win32Exception,则ErrorNumber来自系统错误代码(操作系统错误).否则它应该是sql Server错误号.

哦,然后有-1 …我认为这是由sqlClient本身报告的(例如一些内部状态错误),但我不确定.

原文地址:https://www.jb51.cc/mssql/83669.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐