每当我在SQL Server查询中出现语法错误时,都会收到一条错误消息,并且很难解释。例如,我现在遇到的错误是
信息102,级别15,状态1,过程myQuery,第3行[批处理开始第57行]
'!'附近的语法不正确。
我使用table!column
代替了table.column
。我已解决此问题,因为我了解这一点:
'!'附近的语法不正确
但是,我不明白如何解释此消息
信息102,级别15,状态1,过程myQuery,第3行[Batch Start Line 57]
人们通常只是忽略那一部分吗?我一直很好地相处,而没有非常注意它。但是能够理解错误消息可能有助于准确地定位错误所在。
编辑:
我不知道Msg,级别,状态,批处理和起始行的含义
Edit2:
除了接受的答案this链接之外,还帮助我消除了对行号含义的误解。我一直以为行号是指SQL查询中错误所在的行,这使我感到困惑。原来行号是查询窗口中的行。要在查询编辑器窗口中启用行号,请转到:
工具>选项>文本编辑器> Transact-SQL>常规>行号
按“确定”
答案 0 :(得分:6)
来自Understanding Database Engine Errors:
Microsoft SQL Server数据库引擎引发的错误具有(以下)属性:
州
可以在数据库的代码中的多个点处引发一些错误消息
发动机。例如对于几个不同的条件可能会引发1105错误。
每个引发错误的特定条件都分配一个唯一的状态码。
当您查看包含有关已知问题信息的数据库时,例如 Microsoft知识库中,您可以使用状态号来确定是否 记录的问题与您遇到的错误相同。 [...]
具体来说,[Batch Start Line 57]
意味着您正在运行一个具有多个批处理的脚本-(如果在SSMS中,则这些批处理由GO
关键字分隔)-因此错误出现在脚本的第三行从脚本的第57行开始的批处理。
这是您已张贴到其部分的错误消息的细分:
错误号
消息102,
严重程度
15级,
州
状态1
过程
过程myQuery
行号
第3行[Batch Start Line 57]
错误消息字符串
'!'附近的语法不正确。
答案 1 :(得分:0)
不幸的是,这对我没有用。我使用最新版本的SSMS或SQL Server Management Studio。我有一个SQL脚本(在查询编辑器中),其中包含约100行代码。这是我在查询中遇到的错误:
Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the nvarchar value 'abcd' to data type int.
该错误消息不正确或仅具有误导性。查询编辑器中第70行的实际错误!当我单击错误消息时,将我带到第2行,这只是一个简单的选择顶部1。Google搜索显示该错误与String串联有关,但是我的sql代码中没有串联。>
幸运的是,我记得在忘记将数字(在varchar列中)括在单引号中之前遇到过这种错误。因此,当涉及到调试错误时,SSMS似乎毫无用处。