如何找到导致 SSMS“Msg 8115,Level 16,State 2,Line 1”的行

mne*_*nic 3 sql-server ssms errors

我在 MS SSMS 中有一个 400 行查询。当我运行它时,我得到:

消息 8115,级别 16,状态 2,第 1 行
将表达式转换为数据类型 int 时出现算术溢出错误。

第 1 行只是“Select”语句。我可以在 SSMS 中启用什么功能来让我更接近出现错误的行吗?

Mar*_*ith 6

不。

SQL Server 只会告诉您导致错误的语句行。

它甚至不会尝试将错误与多行语句中的任何特定行联系起来,而且无论如何这并不总是可能的。

SUM对于此错误,您可能只需要使用、COUNT+*-类似的表达式查找可能溢出的表达式int(请记住,问题表达式也可能存在于查询中引用的任何视图、函数或计算列的定义中)。

出于调试目的,您可以尝试抑制错误并在结果中SET ANSI_WARNINGS, ARITHABORT OFF;查找NULL可能溢出的任何内容int- 但这仅在导致错误的表达式与结果集中投影的列相关并且问题值为随后不会被过滤掉,并且NULL通常不会出现在该列中。