解析sqlexception错误消息

时间:2012-03-22 12:43:28

标签: sql-server

我使用C#作为最终用户表单,我想要做的是解析我从SQL服务器获取的错误消息。通常最终用户会获得图片中的消息。是否有办法解析这个并给最终用户他理解的东西而不是那里的那些乱码? (例如"在此上下文中不允许进行名称测试...."如图所示。)

sql error code enter image description here

3 个答案:

答案 0 :(得分:0)

使用Exception.ToString显示完整的堆栈跟踪。使用Exception.Message只获取错误的文本描述部分。

此外,您还可以查看SqlException.ClassSqlException.Number属性,以便在代码中如何处理这些异常时做出明智的决策。 SqlException.Number属性将对应于sys.messages视图中的条目。例如,1205是死锁异常的编号。如果SqlException.Class = 11,那么这是一个并发异常。

SqlException.Errors属性是SqlError对象的列表,其中包含有关单个errors的更多详细信息。由于对数据库的单个RPC调用可能导致多个异常,因此请查看这些错误以查看发生的所有事件。

答案 1 :(得分:0)

exception.ToString()通常会生成类似于图片的字符串。 exception.Message将只包含错误消息,没有堆栈跟踪。

答案 2 :(得分:0)

在SQL中报告错误时,总是存在一个困境,即SQL消息需要向开发人员传达发生的事情,还要向应用程序的用户提供有用的信息。我们开发了一种将SQL消息结构化为XML字符串的技术,该字符串提供有关错误的所有有用信息,允许调用者根据需要使用。您可以在以下网址的代码项目中查看有关此技术的文章:

http://www.codeproject.com/Articles/1076477/SQL-Server-Structure-Error-Handling