none
报错:"No log reader agent is associated with this publication." RRS feed

  • 问题

  • 在RMO接口下执行方法:PublicationMonitor.EnumLogReaderAgent 。返回错误"No log reader agent is associated with this publication." 。但是,在SSMS中打开某一Publication的状态窗口(通过点击"View Log Reader Agent Status"),可看到如下信息:

    Agent type:               Log Reader Agent
    Publication:                test04
    Publication database:  [AdventureWorks]
    Start Time:                2010-09-19 10:15:25
    Status:                      No replicated transactions are available.

    那个报错的原因是什么呢?怎样解决?谢谢版主。

    另外,当执行PublicationMonitor.EnumSnapshotAgent,也是类似的报错信息:"No snapshot agent is associated with this publication."

    2010年9月19日 6:36

答案

  • 搞清楚了,原来在Enum之前,一定要执行方法LoadProperties(),来确定是否“当前的PublicationMonitor对象不存在或其属性定义不正确”。这一步不可缺。
    • 已标记为答案 老笨猪 2010年9月20日 8:51
    2010年9月20日 8:50

全部回复

  • Did you create log read agent and snapshot agant for the db?
    2010年9月19日 23:57
  • Create log read agent:

                        if (!publicationDb.LogReaderAgentExists)
                        {
                            // Specify the Windows account under which the agent job runs.
                            // This account will be used for the local connection to the
                            // Distributor and all agent connections that use Windows Authentication.
                            string s = publisher.SqlServerName;
                            publicationDb.LogReaderAgentProcessSecurity.Login = s.Substring(0, s.IndexOf('\\') == -1 ? s.Length : s.IndexOf('\\')) +@"\Administrator";
                            publicationDb.LogReaderAgentProcessSecurity.Password = oSrcAuthInfo.sAdminPass;

                            // Explicitly set authentication mode for the Publisher connection
                            // to the default value of Windows Authentication.
                            publicationDb.LogReaderAgentPublisherSecurity.WindowsAuthentication = true;

                            // Create the Log Reader Agent job.
                            publicationDb.CreateLogReaderAgent();
                        }

    And create snapshot agent by invoke SnapshotGenerationAgent.SnapshotGenerationAgent ...

    另外,从系统表中可以查到相应的结果:

    SELECT J.JOB_ID, J.NAME, J.ENABLED, J.START_STEP_ID, J.CATEGORY_ID, J.VERSION_NUMBER, C.NAME
    FROM MSDB.DBO.SYSJOBS J, MSDB.DBO.SYSCATEGORIES C
    WHERE J.CATEGORY_ID = C.CATEGORY_ID AND
    (C.NAME='REPL-LogReader' or C.NAME='REPL-Snapshot')

    D0302E3F-AF2E-4CDA-8D25-CBDAA7980AC6  DSG201006301736-AdventureWorks-2           1  1  13  4  REPL-LogReader
    E2AAB8E7-D335-4094-BA34-6EA5B1632927    DSG201006301736-AdventureWorks-test04-3 1  1  15  4  REPL-Snapshot

    2010年9月20日 2:28
  • 搞清楚了,原来在Enum之前,一定要执行方法LoadProperties(),来确定是否“当前的PublicationMonitor对象不存在或其属性定义不正确”。这一步不可缺。
    • 已标记为答案 老笨猪 2010年9月20日 8:51
    2010年9月20日 8:50