【问题标题】:"Uninitialized subscription" error in replication monitor复制监视器中的“未初始化订阅”错误
【发布时间】:2012-06-22 17:07:13
【问题描述】:

我正在使用 SQL Server 2012 并尝试实现事务复制。我使用系统存储过程来创建发布和订阅。我成功创建了这些东西,但是当我检查复制监视器时,它显示“未初始化订阅”。

当我检查订阅的同步状态时,我发现了这个日志

Date        6/20/2012 7:36:33 PM
Log     Job History (HYDHTC0131320D-PublisherDB-PublicationOne-HYDHTC0131320D\MSS-ReplicationSubscri-7C1D7509-C8A6-4073-A901-0433A2B6D2D3)

Step ID     1
Server      HYDHTC0131320D\MSSQLSERVER2
Job Name        HYDHTC0131320D-PublisherDB-PublicationOne-HYDHTC0131320D\MSS-ReplicationSubscri-7C1D7509-C8A6-4073-A901-0433A2B6D2D3
Step Name       Run agent.
Duration        00:07:41
Sql Severity    0
Sql Message ID  0
Operator Emailed    
Operator Net sent   
Operator Paged  
Retries Attempted   0

Message
2012-06-20 14:14:13.986 Copyright (c) 2008 Microsoft Corporation
2012-06-20 14:14:13.986 Microsoft SQL Server Replication Agent: distrib
2012-06-20 14:14:13.986 
2012-06-20 14:14:13.986 The timestamps prepended to the output lines are expressed in terms of UTC time.
2012-06-20 14:14:13.986 User-specified agent parameter values:
            -Publisher HYDHTC0131320D
            -PublisherDB PublisherDB
            -Publication PublicationOne
            -Distributor HYDHTC0131320D
            -SubscriptionType 2
            -Subscriber HYDHTC0131320D\MSSQLSERVER2
            -SubscriberSecurityMode 1
            -SubscriberDB ReplicationSubscriberDB
            -Continuous
            -XJOBID 0xDFE51AEC7F9E3F42A450CE8874B662CD
            -XJOBNAME HYDHTC0131320D-PublisherDB-PublicationOne-HYDHTC0131320D\MSS-ReplicationSubscri-7C1D7509-C8A6-4073-A901-0433A2B6D2D3
            -XSTEPID 1
            -XSUBSYSTEM Distribution
            -XSERVER HYDHTC0131320D\MSSQLSERVER2
            -XCMDLINE 0
            -XCancelEventHandle 000005F8
            -XParentProcessHandle 00000560
2012-06-20 14:14:13.986 Startup Delay: 619 (msecs)
2012-06-20 14:14:14.606 Connecting to Subscriber 'HYDHTC0131320D\MSSQLSERVER2'
2012-06-20 14:14:14.656 Connecting to Distributor 'HYDHTC0131320D'
2012-06-20 14:14:14.671 Parameter values obtained from agent profile:
            -bcpbatchsize 2147473647
            -commitbatchsize 100
            -commitbatchthreshold 1000
            -historyverboselevel 1
            -keepalivemessageinterval 300
            -logintimeout 15
            -maxbcpthreads 1
            -maxdeliveredtransactions 0
            -pollinginterval 5000
            -querytimeout 1800
            -skiperrors 
            -transactionsperhistory 100
2012-06-20 14:14:14.683 Agent message code 21040. Publication '' does not exist.

我该如何解决这个问题?

【问题讨论】:

    标签: replication sql-server-2012 transactional-replication


    【解决方案1】:

    当我设法通过备份初始化启动并运行拉动订阅者时,只需做一些说明:

    1. 确保您拥有发布者、分发者和订阅者的代理帐户作为系统管理员登录所有实例,示例订阅者必须在分发者和发布者上。
    2. 为每个实例上的所有组件创建链接服务器,例如订阅服务器上的分发者和发布者。
    3. 然后对源数据库进行完整备份并在订阅实例上进行恢复而不进行恢复。
    4. 在发布者数据库 (sp_addsubscription) 上创建发布组件,并确保您拥有 @sync_type = N'replication support only'
    5. 然后对源数据库进行差异备份,并在订阅实例上进行恢复并恢复。
    6. 然后在订阅实例上创建拉取订阅(sp_addpullsubscription),注意如果源是镜像实例,这里使用原始实例值(@publisher)。如果您是“镜像”实例的主体,则将正确创建元数据,并且分发器包含将日志阅读器连接到任一镜像实例的逻辑。
    7. 现在您将遇到主键等失败的问题,因为分发器在差异备份之前开始捕获数据......没问题。停止订阅者作业,然后通过将 -SkipErrors 参数设置为“2601:2627”将新配置文件添加到分发代理。这将跳过所有主键违规事务并继续处理。请记住选择此代理配置文件并点击“确定”。
    8. 重新启动订阅作业并在订阅开始赶上交易时对其进行监控。
    9. 当赶上时,停止作业,将代理配置文件更改回默认值并重新启动作业。

    希望这可以帮助任何仍在为基于备份初始化而拉取订阅者而苦苦挣扎的人...请注意,我在任何时候都没有在复制配置中使用任何备份配置。还声明了pull订阅不能初始化(@immediate_sync = 0)。

    这是脚本:

    -----------------BEGIN: Script to be run at Publisher 'DB001\OLTP'-----------------
    use [DB1]
    go
    exec sp_addsubscription @publication = N'DB1', @subscriber = N'DB002\OLTP', @destination_db = N'DB1', @sync_type = N'replication support only', @subscription_type = N'pull', @update_mode = N'read only'
    GO
    
    -----------------END: Script to be run at Publisher 'DB001\OLTP'-----------------
    
    -----------------BEGIN: Script to be run at Subscriber 'DB002\OLTP'-----------------
    use [DB1]
    exec sp_addpullsubscription @publisher = N'DB001\OLTP', @publication = N'DB1', @publisher_db = N'DB1', @independent_agent = N'True', @subscription_type = N'pull', @description = N'', @update_mode = N'read only', @immediate_sync = 0
    
    exec sp_addpullsubscription_agent @publisher = N'DB001\OLTP', @publisher_db = N'DB1', @publication = N'DB1', @distributor = N'DB003\DIST', @distributor_security_mode = 1, @distributor_login = N'', @distributor_password = null, @enabled_for_syncmgr = N'False', @frequency_type = 64, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 20170327, @active_end_date = 99991231, @alt_snapshot_folder = N'\\DB001\Replication', @working_directory = N'', @use_ftp = N'False', @job_login = null, @job_password = null, @publication_type = 0
    GO
    -----------------END: Script to be run at Subscriber 'DB002\OLTP'-----------------
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题并通过执行以下操作来解决:

      • -Subscriber Job owner 与 Publication User 相同

      • -订阅者用户已添加到订阅者用户列表并添加 到系统管理员服务器角色

      【讨论】:

        【解决方案3】:

        我收到了同样的错误。我的解决方法是明确定义 Job_login 和 job_password,我一开始就设置为 null。

        EXEC sp_addpullsubscription_agent 
        @publisher = @publisher, 
        @publisher_db = @publicationDB, 
        @publication = @publication, 
        @distributor = @publisher, 
        @job_login = $(Login), 
        @job_password = $(Password);
        

        【讨论】:

          【解决方案4】:

          您的复制设置脚本中似乎有错误。

          我怀疑错误在于调用 sp_addpushsubscription_agent(如果是推送订阅)或 sp_addpullsubscription_agent(如果是拉订阅)。特别是 @publication 参数是错误的,因为分发代理声明指定的 Publication 不存在

          请检查您的脚本并重试。

          【讨论】:

          • 你说得对,我还是没能解决问题,所以转推出版。谢谢你的回答
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多