重置分发服务器代理对于一致性错误处理的选项

以下脚本可以根据replication的publication_name,订阅端服务器,发布端表名称,订阅端表名称来对分发代理对数据一致性错误处理选项进行设置(默认处理方式,跳过数据一致性处理)。

-- ===========================================================
-- script for :
-- rest distribution agent profile
-- ===========================================================
IF OBJECT_ID(N‘msdb.dbo.MSagent_profiles‘) IS NULL
    RETURN;

DECLARE
    @sql nvarchar(max),
    @flag_default bit
    ,@publication_name sysname
    ,@pub_database_name sysname
    ,@sub_database_name sysname
    ,@sub_server_name sysname
;

SELECT
    @flag_default = 1        --1:default        0:Continue on data consistency errors
    ,@publication_name=NULL                      --null:all
    ,@pub_database_name=NULL               --null:all
    ,@sub_database_name=NULL      --null:all
    ,@sub_server_name=NULL   --null:all

;

WITH
DB AS(
    SELECT
        *
    FROM sys.databases WITH(NOLOCK)
    WHERE is_distributor = 1
),
SQL AS(
    SELECT
        sql = N‘
USE ‘ + QUOTENAME(name) + N‘;
WITH
PF AS(
    SELECT
        profile_id_continue = MAX(
                CASE
                    WHEN profile_name IN(
                            N‘‘Continue on data consistency errors.‘‘,
                            N‘‘遇到数据一致性错误时继续。‘‘)
                        THEN profile_id
                END),
        profile_id_default = MAX(
                CASE
                    WHEN profile_name IN(
                            N‘‘Default agent profile‘‘,
                            N‘‘默认代理配置文件‘‘)
                        THEN profile_id
                END)
    FROM msdb.dbo.MSagent_profiles WITH(NOLOCK)
    WHERE agent_type = 3
        AND profile_name IN(
                N‘‘Continue on data consistency errors.‘‘,
                N‘‘遇到数据一致性错误时继续。‘‘,
                N‘‘Default agent profile‘‘,
                N‘‘默认代理配置文件‘‘)
),
JOB AS(
    SELECT S.name SubServerName,
        A.*
    FROM dbo.MSdistribution_agents AS A WITH(NOLOCK)
    INNER JOIN SYS.SERVERS  AS S WITH(NOLOCK)
    on S.server_id=A.subscriber_id
    where   A.publication=isnull(@publication_name,A.publication)   and A.publisher_db = isnull( @pub_database_name , publisher_db)
    and A.subscriber_db=isnull(@sub_database_name,subscriber_db) and S.name= isnull(@sub_server_name,S.name)
)
SELECT
    JOB.publication,
    JOB.SubServerName,
    JOB.publisher_db, JOB.subscriber_db,
    agent_id = JOB.id,
    job_name = JOB.name,
    PF.profile_id_continue,
    PF.profile_id_default,
    sql_job_stop = N‘‘EXEC msdb.dbo.sp_stop_job @job_name = N‘‘ + QUOTENAME(JOB.name, N‘‘‘‘‘‘‘‘),
    sql_job_profile = N‘‘EXEC ‘‘ + QUOTENAME(DB_NAME()) + N‘‘.dbo.sp_update_agent_profile @agent_type = 3, @agent_id = ‘‘
            + RTRIM(JOB.id) + N‘‘, @profile_id = ‘‘
            ‘
            + CASE
                    WHEN @flag_default = 1 THEN N‘+ RTRIM(PF.profile_id_default),‘
                    ELSE N‘+ RTRIM(PF.profile_id_continue),‘
                END
            + N‘
    sql_job_start = N‘‘EXEC msdb.dbo.sp_start_job @job_name = N‘‘ + QUOTENAME(JOB.name, N‘‘‘‘‘‘‘‘)
FROM JOB, PF
‘
            + CASE
                    WHEN @flag_default = 1 THEN N‘WHERE JOB.profile_id <> PF.profile_id_default‘
                    ELSE N‘WHERE JOB.profile_id = PF.profile_id_default‘
                END
            + N‘
;
‘
    FROM DB
)
SELECT
    @sql = sql
FROM SQL;
PRINT(@sql);
EXEC sys.sp_executesql @sql
                        ,N‘@pub_database_name sysname,@sub_database_name sysname,@sub_server_name sysname,@publication_name sysname‘
                        ,@pub_database_name = @pub_database_name
                        ,@sub_database_name=@sub_database_name
                        ,@sub_server_name=@sub_server_name
                        ,@publication_name=@publication_name;

时间: 2024-10-08 13:48:14

重置分发服务器代理对于一致性错误处理的选项的相关文章

第二篇 Replication:分发服务器的作用

本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程.它将发布和订阅的信息存储在分发数据库.几个代理促进真实数据的移动.术语在这一系列你会看到"分发服务器","发布服务器","订阅服务器".They always refer to a SQL Server instance together with

Git服务器代理上网安装出现问题的几个解决办法。

1.gem安装出现下面错误 [email protected]:/home/git/gitlab# sudo gem install bundler --no-ri --no-rdoc ERROR:  Could not find a valid gem 'bundler' (>= 0), here is why: Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Connection timed out

jenkins在使用maven部署到nginx+tomcat服务器时出现504错误

环境:jenkins+maven+nginx+tomcat 在执行jenkins job发布项目到远程服务器,服务器使用nginx+tomcat.默认使用80端口,通过nginx转发请求.在执行tomcat:redeploy时,出现下面的错误: [ERROR] Failed toexecute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:redeploy (default-cli)on project sgt-node: Cannot invok

Apache服务器代理与缓存

Apache服务器代理与缓存 1.代理  正向代理:             反向代理:   mod_proxy模块 apache实现代理和网关的关键模块.加载mod_proxy模块:LoadModule proxy_module modules/mod_proxy.so 指令: ProxyRequests指令:启用或禁止apache作为正向代理服务器的功能<proxymatch>/<proxy>容器:存放作用于代理服务器的指令,可以控制用户的权限,其中proxymatch支持正则

服务器 ‘xxxx‘ 已被定义为分发服务器。若要将该服务器重新配置为分发服务器,必须首先卸载现有的分发服务

使用AWS DMS(Database Migration Service)将SQL Server数据库同步到AWS的Data Lake上,需要在本地源数据库上配置复制,在配置分发向导最后一步时,遇到下面错误: TITLE: Microsoft.SqlServer.ConnectionInfo ------------------------------   SQL Server could not configure 'xxxx' as a Distributor.   ------------

nginx服务器代理获取接口数据

自从学会用nginx服务器代理抓取数据,妈妈再也不用担心我写DEMO时拿不到数据了,从此你也摆脱了自己造数据的烦恼.哇!又出新框架了,走,写个DEMO练习去,那我们用React.JS仿制个淘宝出来吧,淘宝数据怎么办???so easy , 直接去抓取接口数据就可以了. 一.下载nginx服务器 去nginx官网下载nginx服务器,我们就下载nginx/Windows-1.8.1 pgp 这个吧! 二.配置环境 1. 将下载的压缩包解压后获得如下图所示的文件夹: 2.打开conf文件夹并打开ng

SQL SERVER出现大量一致性错误的解决方法

如果DBCC CHECKDB发现了比较少的一致性错误,可以使用   DBCC UPDATEUSAGE(DatabaseName,"dbo.ObjectName"); 语句逐个针对表或索引中的每个分区更正行.已用页.保留页.叶级页和数据页的计数.但是如果数据库出现大量一致性错误.例如如下所示: DBCC results for 'JO_T_CUTXX'. 消息 2508,级别 16,状态 1,第 1 行 The In-row data USED page count for object

服务器登录界面出现错误提示框 “在系统启动时至少有一个服务或驱动程序产生错误。&quot;

服务器登录界面出现错误提示框 "在系统启动时至少有一个服务或驱动程序产生错误.详细信息,请使用事件查看器查看事件日志." 1.开始 运行 regedit.exe 打开注册表: 2.找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows 3.修改 NoPopUpsOnBoot 的值为"1",没有的话就新建1个dword 值.

SSH 免密码登录——批量分发服务器

需求:nfs服务器兼做批量分发服务器.backup备份服务器.mb01服务为批量分发的客户端.通过NFS服务器讲编辑好的hosts文件批量分发到备份服务器和mb01服务器的./etc/下.使内网环境可以使用/etc/hosts 文件做正向.反向的域名解析. 由于root具有最大的权限,所以不建议使用root用户进行SSH免密码登录,而是在所有的机器上建立相同的普通用户,通过普通用户的SSH免密码登录,使用scp 命令将hosts文件分发到客户端的该普通用户的家目录下.在各客户端为该普通用户通过s