如何解释SQL Server错误?

jed*_*edu 1 sql-server

每当我在SQL Server查询中出现语法错误时,我都会收到一条错误消息,我发现很难解释.例如,我现在的错误是

消息102,级别15,状态1,过程myQuery,第3行[批处理开始行57]
'!'附近的语法不正确.

我用table!column而不是table.column.我解决了我的问题因为我理解了这一点:

'!'附近的语法不正确

但是,我不明白如何解释这条消息

Msg 102,Level 15,State 1,Procedure myQuery,Line 3 [Batch Start line 57]

人们通常会忽略那部分吗?我一直相处得很好而没有太在意它.但是能够理解错误消息可能有助于准确定位错误的位置.

编辑:

我不明白Msg,Level,State,Batch和Start Line的含义

EDIT2:

除了接受的答案,这个链接也帮助我清除了我对线号意味着什么的误解.我一直认为行号意味着SQL查询中的行错误使我感到困惑.结果是行号是查询窗口中的行.要在查询编辑器窗口中启用行号,请转到:

工具>选项>文本编辑器> Transact-SQL>常规>行号

按确定

Zoh*_*led 6

了解数据库引擎错误:

Microsoft SQL Server数据库引擎引发的错误具有(以下)属性:

  • 错误编号
    每条错误消息都有唯一的错误编号.
  • 错误消息字符串
    错误消息包含有关错误原因的诊断信息.许多错误消息具有替换变量,其中插入了诸如生成错误的对象的名称之类的信息.
  • 严重性 严重性表示错误的严重程度.严重性较低的错误(例如1或2)是信息消息或低级别警告.严重程度较高的错误表明应尽快解决问题.
  • 状态
    可以在数据库引擎的代码中的多个点处引发一些错误消息.例如,可以针对几种不同的条件引发1105错误.引发错误的每个特定条件都会分配一个唯一的状态代码.

    当您查看包含有关已知问题的信息的数据库(例如Microsoft知识库)时,您可以使用状态编号来确定记录的问题是否与您遇到的错误相同.[...]

  • 过程名称
    是发生错误的存储过程或触发器的名称.
  • 行号
    指示批处理,存储过程,触发器或函数中的哪个语句生成错误.

具体来说,[Batch Start Line 57]意味着您正在运行具有多个批处理的脚本 - (如果它在SSMS中,批处理由GO关键字分隔) - 因此错误位于从脚本的第57行开始的批处理的第3行.

这是您发布到其部分的错误消息的细分:

ErrorNumber

消息102,

严重

15级,

州1,

程序

程序myQuery,

电话号码

第3行[批次启动第57行]

错误消息字符串

'!'附近的语法不正确.