zoukankan      html  css  js  c++  java
  • 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
     
     
     
     
     
     
  • 相关阅读:
    栈的压入、弹出序列
    CSS min-height 属性
    ie6 png 透明的解决方法,大网站都在用
    div覆盖div DIV相互重叠如何解决
    div代码大全 DIV代码使用说明
    CSS中ul li居中的问题
    复选框单选框与文字对齐问题的研究与解决
    CSS利用filter/opacity实现背景透明
    什么是块级元素和内联级元素(二)
    网页上PNG透明图片的运用(ie6+滤镜)
  • 原文地址:https://www.cnblogs.com/CareySon/p/4580883.html
Copyright © 2011-2022 走看看