SQLGetDiagRec的返回本地错误代码。 在哪里有SQL Server 2012中的错误代码的概况? 我找不到MSDN上任何东西。
Answer 1:
我无法找到在互联网上的个人代码的列表。 但是我发现了严重级别的列表, 在这里在MSDN上。 它们分别是:
严重级别/说明
- 0-9:返回不属于严重状态信息或报告错误信息性消息。 数据库引擎不会通过9的0严重程度提高系统错误。
- 10:返回不属于严重状态信息或报告错误信息性消息。 出于兼容性考虑,数据库引擎返回错误信息给调用应用程序之前转换严重性10严重性0。
- 11-16:表示可以由用户来纠正错误。
- 11:表示给定的对象或实体不存在。
- 12:不使用,因为特殊的查询提示的锁定查询一个特殊的严重性。 在某些情况下,通过阅读这些声明进行可能导致数据不一致的操作,因为锁不采取保证一致性。
- 13:表示事务死锁错误。
- 14:表示与安全相关的错误,如权限被拒绝。
- 15:表示在Transact-SQL命令语法错误。
- 16:表示可以由用户进行校正一般的错误。
- 17-19:表明,不能由用户纠正软件错误。 将问题通知系统管理员。
- 17:表示该说法引起了SQL Server运行出来的资源(如内存,锁,或者数据库磁盘空间)或超出限额部分由系统管理员设置。
- 18:表示在数据库引擎软件问题,但语句完成执行,并到数据库引擎实例保持连接。 系统管理员应每发生与18的严重性级别的消息时通知。
- 19:表示不可配置的数据库引擎已超出限制和当前批处理已终止。 为19或更高的严重性级别的错误消息停止当前批处理的执行。 严重级别19的错误是罕见的,必须由系统管理员或主要支持提供者予以纠正。 在引发严重级别为19的消息,请联系您的系统管理员。 从19到25严重性级别的错误消息被写入到错误日志。
- 20-24:指示系统的问题,是致命错误,这意味着数据库引擎的任务,正在执行语句或批处理不再运行。 任务记录什么发生的信息,然后终止。 在大多数情况下,应用程序连接到数据库引擎实例也可以终止。 如果发生这种情况,根据不同的问题,应用程序可能无法重新连接。 在此范围内的错误消息可以影响所有在同一个数据库访问数据的处理,并且可以指示数据库或对象被损坏。 从19至24严重性级别的错误消息被写入到错误日志。
- 20:表示声明遇到了问题。 因为该问题只影响了当前的任务,这是不可能的数据库本身已损坏。
- 21:表示问题已经遇到了影响当前数据库中的所有任务,但它是不可能的数据库本身已损坏。
- 22:表示在该消息中指定的表或索引已经由软件或硬件问题损坏。 很少发生严重级别22的错误。 如果一个发生,运行DBCC CHECKDB以确定是否在数据库中的其他对象也受到伤害。 这个问题可能仅无法在缓冲区高速缓存磁盘本身上。 如果是这样,重新启动数据库引擎实例可以解决该问题。 要继续工作,必须重新连接到数据库引擎实例; 否则,使用DBCC修复该问题。 在某些情况下,您可能需要恢复数据库。 如果重新启动数据库引擎实例不能解决问题,那么问题是在磁盘上。 有时破坏该错误消息可以解决问题所指定的对象。 例如,如果该消息报告数据库引擎的实例发现在非聚簇索引的一个长度0行,删除索引和重建它。
- 23:表示整个数据库的完整性存在问题,因为的硬件或软件问题。 很少发生严重级别23的错误。 如果一个发生时,运行DBCC CHECKDB以确定所述损伤的程度。 这个问题可能仅不会在高速缓存中的磁盘本身上。 如果是这样,重新启动数据库引擎实例可以解决该问题。 要继续工作,必须重新连接到数据库引擎实例; 否则,使用DBCC修复该问题。 在某些情况下,您可能需要恢复数据库。
- 24:指示介质故障。 系统管理员可能需要恢复数据库。 您可能还打电话给你的硬件供应商。
Answer 2:
use master
select * from sysmessages
Answer 3:
我发现MS SQL Server 2008 R2中的代码,但大部分都是真实的更高版本: http://technet.microsoft.com/en-us/library/cc645603(v=sql.105).aspx
Answer 4:
我也一直在寻找一个列表自己和发现,你可以从主数据库运行该语句来查看所有:
SELECT * FROM sysmessages
Answer 5:
在SQL Server 2005及以上的,你可以这样做:
SELECT * FROM sys.messages
正如其他人所说,你也可以使用(在SQL Server 2000中提供):
SELECT * FROM sysmessages
文章来源: Is there an overview of all SQL Server 2012 error codes?