• Sqlserver Sql Agent Job 只能同时有一个实例运行


    Sqlserver Sql Agent中的Job默认情况下只能有一个实例在运行,也就是说假如你的Sql Agent里面有一个正在运行的Job叫"Test Job",如果你现在再去启动一次"Test Job"就会报错,因为Sqlserver规定在一个Sqlserver账号下,Sql Agent不能同时启动相同的Job两次,只有前一次启动执行完成后,才能够再次启动该Job。

    那么随之而来的问题是如何用sql语句检测Job是否已经执行完毕了呢?下面有一个语句可以作为参考:

    EXEC msdb.dbo.sp_help_job @execution_status = 1

    以上语句执行完后,返回的行就是当前正在运行的Job信息,其中列name就是正在执行Job的名称,如果你要查找的Job不在上面这个存储过程返回的结果里面,表示该Job已经执行完毕了。


    如果查询到Sql Agent中的Job正在执行,可以使用存储过程msdb.dbo.sp_stop_job强制停止Job,然后再使用存储过程msdb.dbo.sp_start_job来启动Job,需要注意的是如果在已经停止的Job上调用msdb.dbo.sp_stop_job或者在正在执行的Job上调用msdb.dbo.sp_start_job会报错,所以在调用存储过程msdb.dbo.sp_start_job和msdb.dbo.sp_stop_job前需要判断Job的当前执行状态,或者使用sql的Try Catch语句来捕获错误,msdb.dbo.sp_stop_job和msdb.dbo.sp_stop_job的使用方法如下所示:

    EXEC msdb.dbo.sp_start_job @job_name='Job_name'--Job_name就是Job的名字
    EXEC msdb.dbo.sp_stop_job    @job_name='Job_name'--Job_name就是Job的名字
  • 相关阅读:
    ListCtrl中垂直滚动条自动滚动
    auth组件
    母版的继承
    mysql数据备份和恢复
    部署MHA
    安装mysql
    yum源优化
    存储过程
    redis哨兵、集群
    redis主从同步
  • 原文地址:https://www.cnblogs.com/OpenCoder/p/5168658.html
Copyright © 2020-2023  润新知