在作业中用raiserror的形式可以行吗?

解决方案 »

  1.   

    我是说如果作业是一个transact sql的批处理,比如是往一个表里插入记录,如果插入记录成功表示作业成功,如果插入记录失败表示作业失败。 那怎么写呢?
      

  2.   

    不是很明白你的意思if @@error<> 0 
    print '失败'
    else
    print '成功'
      

  3.   

    print? 不会吧。 那打印到哪里去了。 打印出来就表示成功或者失败吗?
      

  4.   

    if @@error<> 0 
    raiserror 个错误号1  --触发失败警报
    else
    raiserror 个错误号2  --触发成功警报
      

  5.   

    將成功或失敗標志插入到物理表中,如:
    ...Your Code
    IF @@ERROR<>0 
        INSERT INTO 數據庫.dbo.tabFlag(...) VALUES ('N',GETDATE())
    ELSE
        INSERT INTO 數據庫.dbo.tabFlag(...) VALUES ('Y',GETDATE())再讀取tabFlag表的內容,便知結果
      

  6.   

    print 只是一个例子而已if @@error<> 0 
    可以触发一个警报,或raiserror,也可以返回一个值,具体要看你怎么样处理
    else..
      

  7.   

    是不是如果调用了raiserror就表示作业是执行失败了呢? 还是没说清楚到底什么样才是执行失败,什么样才是执行成功。说得更明白一点: 如何用程序的方法来得到一个作业的执行结果情况? 得到一个作业是执行成功了还是执行失败了?谢谢大家!
      

  8.   

    use msdb
    goselect b.[name],b.[description],a.message
    from
    sysjobhistory a inner join sysjobs b
    on a.job_id=b.job_id
    where run_status=0 and b.[name]='作业名称'
      

  9.   

    我看了sysjobhistory表里面没有run_status为0的记录啊,有1或者3的,也有执行成功的啊。还有,是不是如果调用了raiserror就表示作业是执行失败了呢? 还是没说清楚到底什么样才是执行失败,什么样才是执行成功。就是在transact sql 里如何写语句表示执行成功或者失败?
      

  10.   

    run_status=0 则作业失败run_status int 作业的执行状态: 
    0 = 失败
    1 = 成功
    2 = 重试
    3 = 取消
    4 = 正在进行
      

  11.   

    还是没回答我真正的问题:
    在transact sql 里如何写语句表示执行成功或者失败?比如:
    insert into my_table(my_field) values('values');
    if( @@error<>0 )
      -- 如何表示作业失败?
    else
      -- 如何表示作业成功?
     
      

  12.   

    直接在程序里调用存储过程sp_add_job,传递相应的参数,然后看他的返回结果如果为0--成功,1--失败。
    在调用存储过程时最好利用事务。
    试试吧