• T-SQL检查停止的复制作业代理,并启动


        有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题。因此我写了一个脚本定期检查处于停止状态的分发代理,将其启动。

    注:该脚本需要跑在分发服务器下的MSDB库中。

     

    USE [msdb]
     
    Create PROC [dbo].[CheckToRestartStopedAgentJob]
    AS
        DECLARE @jobname VARCHAR(200)
     
        DECLARE jobname CURSOR
        FOR
            SELECT DISTINCT
                    b.name AS MergeJobName
            FROM    distribution.dbo.MSdistribution_history a
                    INNER JOIN distribution.dbo.MSdistribution_agents b ON a.agent_id = b.id
            WHERE   comments LIKE '传递了%'
     
        OPEN jobname
     
        FETCH NEXT  FROM jobname INTO @jobname
     
        WHILE @@FETCH_STATUS = 0
            BEGIN
     
     
     
                    BEGIN
     
                        IF NOT EXISTS ( SELECT  *
                                        FROM    msdb..sysjobs
                                        WHERE   Name = @jobname )
                            BEGIN
                                PRINT 'Job does not exists'
         
                            END
                        ELSE
                            BEGIN
                                CREATE TABLE #xp_results
                                    (
                                      job_id UNIQUEIDENTIFIER NOT NULL ,
                                      last_run_date INT NOT NULL ,
                                      last_run_time INT NOT NULL ,
                                      next_run_date INT NOT NULL ,
                                      next_run_time INT NOT NULL ,
                                      next_run_schedule_id INT NOT NULL ,
                                      requested_to_run INT NOT NULL , -- BOOL  
                                      request_source INT NOT NULL ,
                                      request_source_id SYSNAME
                                        COLLATE database_default
                                        NULL ,
                                      running INT NOT NULL , -- BOOL  
                                      current_step INT NOT NULL ,
                                      current_retry_attempt INT NOT NULL ,
                                      job_state INT NOT NULL
                                    )  
     
                                INSERT  INTO #xp_results
                                        EXECUTE master.dbo.xp_sqlagent_enum_jobs 1,
                                            'sa'  
     
                                IF EXISTS ( SELECT  1
                                            FROM    #xp_results X
                                                    INNER JOIN msdb..sysjobs J ON X.job_id = J.job_id
                                            WHERE   x.running = 1
                                                    AND j.name = @jobname )
                                    BEGIN
                                        PRINT 1
                                    END
                                ELSE
                                    BEGIN
                                        INSERT  INTO master.dbo.RestartMergeReplicationLog
                                                ( message ,
                                                  errortime
                                                )
                                        VALUES  ( 'Job:' + @jobname
                                                  + ' is not running,restarting......' ,
                                                  GETDATE()
                                                )
                                        EXEC('EXEC dbo.sp_start_job  '''+@jobname+'''' )
                                    END 
                                DROP TABLE #xp_results
                            END
       
     
     
     
     
     
             
                FETCH NEXT  FROM jobname INTO @jobname
            END
     
     
        CLOSE jobname
        DEALLOCATE jobname
     
     
     
     
     
     
  • 相关阅读:
    AutoCAD快速开发框架之菜单Menu
    AutoCAD快速开发框架之插件Plugin
    探秘AutoCAD中的阵列
    Developing Associative Functionality in AutoCAD(转)
    Getting Block Name from Associative Array(转)
    Developing associative features in AutoCAD(转)
    外部文件创建块
    AutoCAD支持的.NET SDK以及.NET Framework版本
    Flutter异步获取网络数据
    swift使用google admod的横幅,插页式,激励式广告示例
  • 原文地址:https://www.cnblogs.com/CareySon/p/4580883.html
Copyright © 2020-2023  润新知