none
在Replication Monitor中看到如下error:The process could not bulk copy into table '"dbo"."AWBuildVersion"' RRS feed

  • 问题

  • 我在实例A的Replication中定义了publications,在实例B中定义了subscription,即:Subscription DSG201006301736\DESTINSTANCE0:AdventureWorks to DSG201006301736\AdventureWorks:test02,我在publications中只定义了一个article(dbo.AWBuildVersion),但是在Replication Monitor中看到了如题所示的错误信息,详细信息如下:

    Error messages:
    The process could not bulk copy into table '"dbo"."AWBuildVersion"'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20037)
    Get help: http://help/MSSQL_REPL20037
    Invalid object name 'dbo.AWBuildVersion'. (Source: MSSQLServer, Error number: 208)
    Get help: http://help/208
    To obtain an error file with details on the errors encountered when initializing the subscribing table, execute the bcp command that appears below.  Consult the BOL for more information on the bcp utility and its supported options. (Source: MSSQLServer, Error number: 20253)
    Get help: http://help/20253
    bcp "AdventureWorks"."dbo"."AWBuildVersion" in "\\DSG201006301736\repldata\unc\DSG201006301736_ADVENTUREWORKS_TEST02\20100708162107\dboDAWBuildVersion_2.bcp" -e "errorfile" -t"\n<x$3>\n" -r"\n<,@g>\n" -m10000 -SDSG201006301736\DESTINSTANCE0 -T -w (Source: MSSQLServer, Error number: 20253)
    Get help: http://help/20253

    信息上怎么说是“Invalid object name 'dbo.AWBuildVersion' ”呢?它不是会在目标端自动创建对象dbo.AWBuildVersion吗?谢谢大家。

    2010年7月8日 8:29

答案

  • 前后整整两个月,终于弄清了问题的症结所在:在TransArticle.Create之前,应该设置SchemaOption成员的值,而且应该article.SchemaOption |= CreationScriptOptions.PrimaryObject;这样便可在sch脚本中创建Create Object语句。后面的问题也就都不存在了。

    • 已标记为答案 老笨猪 2010年9月10日 17:58
    2010年9月10日 17:57

全部回复

  • Which replication did you set and how?
    2010年7月8日 13:07
  • Hi,miao。你问哪一个复制是什么意思呢?我把Studio中的Object Explorer抄下来(这里为什么不能贴图呢?):

    源端: 

    -DSG201006301736

      -Replication

        -Local Publications

          -[AdventureWorks]: test02

            [DSG201006301736\DESTINSTANCE0].[AdventureWorks]

        -Local Subscriptions

    目标端: 

    -DSG201006301736\DESTINSTANCE0

      -Replication

        -Local Publications

        -Local Subscriptions

          [AdventureWorks] - [DSG201006301736].[AdventureWorks]

    2010年7月9日 4:38
  • Is it transactional or merge or other replication? Did you generate snapshot?
    2010年7月9日 16:44
  • Hi,miao,谢谢你的关注。我在尝试RMO编程。在这个例子中,我create a transactional replication, create articles(only AdventureWorks.dbo.AWBuildVersion), create subscription, 如上面所示,在同一台服务器上,将数据库从一个实例复制到另一个实例中,最后执行了SnapshotGenerationAgent.GenerateSnapshot。是按照RMO编程例子中做的。
    2010年7月10日 3:12
  • Not sure why reinvent the wheel. Set replicatio in wizard then scrit it out, may help you understand all steps involved.
    2010年7月11日 1:13
  • 通过在Studio中创建publication, agent, subscription等,已经实现。RMO难道不能完成相同功能吗?

    2010年7月11日 6:38
  • Should be if you know how.
    2010年7月11日 18:39
  • 这个应该跟你在添加 subscription  时的选项设置有关.

    我不清楚 RMO 的选项设置, 你可以参考 sp_addsubscription 中的@sync_type参考去 RMO 中寻找对应的选项配置.

    2010年7月12日 4:52
  •  谢谢邹建的回复。我现在创建的订阅Subscription(TransSubscription)属性如下:

      AgentJobId "2EF7DDB81C6D8940BDE4F4129F20E37C"
      AgentOffload false
      AgentOffloadServer ""
    +AgentSchedule {Microsoft.SqlServer.Replication.ReplicationAgentSchedule}
      CreateSyncAgentByDefault true
      DatabaseName "AdventureWorks"
      EnabledForSynchronizationManager false
      Name "DSG201006301736\\DESTINSTANCE0:AdventureWorks1"
      PublicationName "test02"
      Status Active
      SubscriberName "DSG201006301736\\DESTINSTANCE0"
    +SubscriberSecurity {Microsoft.SqlServer.Replication.ConnectionSecurityContext}
      SubscriptionDBName "AdventureWorks1"
      SubscriptionType Push
      SynchronizationAgentName "DSG201006301736-AdventureWorks-DSG201006301736\\DESTINSTANCE-6"
    +SynchronizationAgentProcessSecurity {Microsoft.SqlServer.Replication.ProcessSecurityContext}
      SyncType Automatic


    +BackupInformation 'subscription.BackupInformation' threw an exception of type 'System.ApplicationException'
      DtsPackageLocation Distributor
      DtsPackageName ""
      DtsPackagePassword ""
      FullSubscription true
      LoopBackDetection true
      PublisherName null
    +SecureDtsPackagePassword {System.Security.SecureString}
      SubscriberCatalog null
      SubscriberDatasource null
      SubscriberDatasourceType SqlServer
      SubscriberLocation null
      SubscriberProvider null
      SubscriberProviderString null
      SubscriberType ReadOnly

    其中,SyncType 的值为'Automatic'。这里面有什么问题吗?

    2010年7月12日 8:41
  • 上述bcp出错信息中,发生的原因是 Invalid object name 'dbo.AWBuildVersion' ,那为什么这个对象会不存在呢?我看到通过方法 SnapshotGenerationAgent.GenerateSnapshot 来 Generate the initial snapshot 的时候,最终会生成四种类型的文件:.bcp .idx .pre .sch ,其中我在pre和sch文件中看到SQL语句:drop Table [dbo].[AWBuildVersion] ,但是却没有发现create table 语句,那当执行bcp "AdventureWorks"."dbo"."AWBuildVersion" in ... 的时候就会报告Invalid object name ,我发现的这个现象不知道是不是bcp报错的原因,更进一步,那 GenerateSnapshot 方法为什么没有在导出的pre或sch文件中生成create table语句呢?

    2010年8月24日 4:55
  • 我在数据库的properties中,将数据库AdventureWorks设置了: Enable this as a primary database in a log shipping configuration。是不是Log shipping与Replication被同时设置时,会产生此问题呢?

    2010年9月7日 8:04
  • Not really, you can replicate log shipped db.
    2010年9月7日 13:32
  • 前后整整两个月,终于弄清了问题的症结所在:在TransArticle.Create之前,应该设置SchemaOption成员的值,而且应该article.SchemaOption |= CreationScriptOptions.PrimaryObject;这样便可在sch脚本中创建Create Object语句。后面的问题也就都不存在了。

    • 已标记为答案 老笨猪 2010年9月10日 17:58
    2010年9月10日 17:57