怎么在作业中屏蔽除零错误?

ohfox 2010-06-15 05:05:29
我有个作业定时的调用我的sp
可是我的sp在计算的时候会遇到一些除零错误,单独跑sp是没问题的,只是提示除零错误而已
可是在作业中调用的话,一遇到除零错误,作业就停了,然后尝试重新开始跑,我看作业的日志,SQL严重性是16,SQL消息是8134

我不想让作业在遇到除零的时候就停止了,该在哪里设置什么呢,谢谢
...全文
155 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohfox 2010-06-17
  • 打赏
  • 举报
回复
google了下,有人是在sp中间包含链接服务器的时候报这个错的,我的就是包含了链接服务器的表
那不能用
set ansi_warnings off
了??
ohfox 2010-06-17
  • 打赏
  • 举报
回复
我单独的只设置"SET ANSI_WARNINGS OFF",也不行啊,也报上面的错误.
ohfox 2010-06-17
  • 打赏
  • 举报
回复
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
SET ANSI_WARNINGS OFF
上面这个是我sp里面的set设置,可是编译的时候报错
"异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保查询语义一致。请启用这些选项,然后重新发出查询。"

难道ANSI_WARNINGS OFF和前面的两个ON不兼容么?
feilniu 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ohfox 的回复:]

谢谢
我看了下,NULLIF如果被除数是0,那么该表达式返回NULL,这样这一步我的计算是不是就得到一个NULL的结果了?
[/Quote]

是的。但是不会报错。所以可以避免中断。
chuifengde 2010-06-17
  • 打赏
  • 举报
回复
只有两种方法,一种是让系统忽略,一种是自已处理有可能出现0的情况,让系统忽略就用set选项,自已处理就把可能出现0为除数的处理掉,用nullif如果列值是null会导致错误
ohfox 2010-06-17
  • 打赏
  • 举报
回复
重要的是,在作业中被调用的话,不会引起作业停止重试吧?
我这个计算的sp时间比较长,一会我把上面各位的方法都试一下.
ohfox 2010-06-17
  • 打赏
  • 举报
回复
谢谢
我看了下,NULLIF如果被除数是0,那么该表达式返回NULL,这样这一步我的计算是不是就得到一个NULL的结果了?
ChinaJiaBing 2010-06-17
  • 打赏
  • 举报
回复

---查询问题.去空
isnull()......
feilniu 2010-06-17
  • 打赏
  • 举报
回复
SELECT @a / @b
改成
SELECT @a / NULLIF(@b,0)
能防止出现除零错误。
ohfox 2010-06-17
  • 打赏
  • 举报
回复
恩,是这样,sp_main_compute_basic这个是我的入口总的存储过程,它的里面调用了一堆的存储过程计算各种指标,那么 'set ansi_warnings off' 写在我的总的存储过程里面就ok了么?
别的那一堆的计算各种指标的存储过程我都是设置的'set ansi_warnings on' 的
像这种类似的设置,比如
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
等,外面调用的存储过程的设置能覆盖内层的设置么?
chuifengde 2010-06-17
  • 打赏
  • 举报
回复
写在存储过程里面
ohfox 2010-06-17
  • 打赏
  • 举报
回复
这个是我在sp_add_jobstep 里面的命令:
......
@command = 'set ansi_warnings off
SET ARITHABORT off
'EXEC StockPlatform..sp_main_compute_basic',
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔



是这样么?
永生天地 2010-06-15
  • 打赏
  • 举报
回复
加 SET ANSI_WARNINGS OFF 试试
ohfox 2010-06-15
  • 打赏
  • 举报
回复
谢谢
我是2005,我没找到类似这样的地方
能大概说一下位置么
幸运的意外 2010-06-15
  • 打赏
  • 举报
回复
可以设定作业在除零错误出现时,不终止作业,继续下一步就可以了。
sql server 2000可以在企业管理器中设定。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧