SQL Server 中警告消息的来源
运行存储过程时,我收到如下警告:
Warning: Null value is eliminated by an aggregate or other SET operation.
我知道警告的含义,但是是什么存储过程和行号导致了该警告?
问题是该存储过程非常庞大,并且调用了十几个其他过程。因此,当 SQL Server 没有提供警告产生的行号和过程名称时,定位问题就变得非常困难。这是使用 SQL Server 2008。
I'm getting warnings like these when running a stored procedure:
Warning: Null value is eliminated by an aggregate or other SET operation.
I know what the warning means, but what stored procedure and line number is causing it?
The thing is that the stored procedure is gigantic and calls a dozen other procedures. So it becomes very hard to localize the problem when SQL Server doesn't give you the line number and procedure name where the warning originates. This is using SQL Server 2008.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您在包含空值的列上有 ansi 警告和聚合(总和、最大值、最小值...)。
您可以将 ansi_warnings 设置为关闭,但最好删除空值,
例如
总和(合并(col,0))
you have ansi warnings on and an aggregate (sum, max, min, ...) on a column which contains a null value.
You can set ansi_warnings off but better to remove the nulls
e.g.
sum(coalesce(col,0))
您可以为此使用扩展事件。
1) 创建并启动会话
2) 测试
获取结果
You can use Extended Events for this.
1) Create and Start the Session
2) Test
Get the Results
在跟踪文件中捕获正在运行的主过程。
Capture running the main proc in a Trace file.