我有个作业定时的调用我的sp
可是我的sp在计算的时候会遇到一些除零错误,单独跑sp是没问题的,只是提示除零错误而已
可是在作业中调用的话,一遇到除零错误,作业就停了,然后尝试重新开始跑,我看作业的日志,SQL严重性是16,SQL消息是8134我不想让作业在遇到除零的时候就停止了,该在哪里设置什么呢,谢谢

解决方案 »

  1.   

    可以设定作业在除零错误出现时,不终止作业,继续下一步就可以了。
    sql server 2000可以在企业管理器中设定。
      

  2.   

    加 SET ANSI_WARNINGS  OFF 试试 
      

  3.   

    这个是我在sp_add_jobstep 里面的命令:
    ......
    @command   =  'set ansi_warnings off 
         SET ARITHABORT off 
        'EXEC StockPlatform..sp_main_compute_basic',   
    @retry_attempts   =   5,   --重试次数 
    @retry_interval   =   5     --重试间隔 是这样么?
      

  4.   

    恩,是这样,sp_main_compute_basic这个是我的入口总的存储过程,它的里面调用了一堆的存储过程计算各种指标,那么 'set ansi_warnings off' 写在我的总的存储过程里面就ok了么?
    别的那一堆的计算各种指标的存储过程我都是设置的'set ansi_warnings on' 的
    像这种类似的设置,比如
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    等,外面调用的存储过程的设置能覆盖内层的设置么?
      

  5.   

    SELECT @a / @b
    改成
    SELECT @a / NULLIF(@b,0)
    能防止出现除零错误。
      

  6.   


    ---查询问题.去空
    isnull()......
      

  7.   

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

  8.   

    只有两种方法,一种是让系统忽略,一种是自已处理有可能出现0的情况,让系统忽略就用set选项,自已处理就把可能出现0为除数的处理掉,用nullif如果列值是null会导致错误
      

  9.   

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    SET ANSI_WARNINGS OFF
    上面这个是我sp里面的set设置,可是编译的时候报错
    "异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保查询语义一致。请启用这些选项,然后重新发出查询。"难道ANSI_WARNINGS OFF和前面的两个ON不兼容么?
      

  10.   

    我单独的只设置"SET ANSI_WARNINGS OFF",也不行啊,也报上面的错误.
      

  11.   

    google了下,有人是在sp中间包含链接服务器的时候报这个错的,我的就是包含了链接服务器的表
    那不能用
    set   ansi_warnings   off
    了??