每当我在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>常规>行号
按确定
Microsoft SQL Server数据库引擎引发的错误具有(以下)属性:
状态
可以在数据库引擎的代码中的多个点处引发一些错误消息.例如,可以针对几种不同的条件引发1105错误.引发错误的每个特定条件都会分配一个唯一的状态代码.
当您查看包含有关已知问题的信息的数据库(例如Microsoft知识库)时,您可以使用状态编号来确定记录的问题是否与您遇到的错误相同.[...]
具体来说,[Batch Start Line 57]
意味着您正在运行具有多个批处理的脚本 - (如果它在SSMS中,批处理由GO
关键字分隔) - 因此错误位于从脚本的第57行开始的批处理的第3行.
这是您发布到其部分的错误消息的细分:
ErrorNumber
消息102,
严重
15级,
州
州1,
程序
程序myQuery,
电话号码
第3行[批次启动第57行]
错误消息字符串
'!'附近的语法不正确.