SQL事务复制

时间:2016-08-26 13:01:14

标签: sql-server replication bcp transactional-replication

所以我从Publisher(SQL Server 2014)分发服务器(SQL Server 2014)订阅服务器(SQL Server 2008 R2)设置了T复制,并使用快照初始化它。

签入复制监视器我发现Snapshot Agent已成功完成,并且Log Reader代理正在运行。

现在进入订阅者历史记录' “未分配的命令”旁边的选项卡'标签

我收到以下错误:

  

该流程无法批量复制到表格" dbo"。" BEAMDATA"'。 (来源:MSSQL_REPL,错误号:MSSQL_REPL20037)
  获得帮助:http://help/MSSQL_REPL20037
  到达文件结束,终结器丢失或字段数据不完整
  要获取错误文件,其中包含初始化订阅表时遇到的错误的详细信息,请执行下面显示的bcp命令。有关bcp实用程序及其支持的选项的更多信息,请参阅BOL。 (来源:MSSQLServer,错误号:20253)
  获得帮助:http://help/20253
  bcp" LOWIS_BUCT"。" dbo"。" BEAMDATA" in" C:\ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ ReplData \ unc \ LOWISBUCT_CSSQLDB_BUCT_CSSQLDB_BUCT_ALL_TABLES \ 20160826064516 \ BEAMDATA_34#1.bcp" -e" errorfile" -t" \ n \ n" -r" \ N'LT;,@ g取代; \ n" -m10000 -SLOWISTSTSQL -T -w(来源:MSSQLServer,错误号:20253)
  获取帮助:http://help/20253

我认为这可能是某种数据溢出,因此检查了Publisher和Distributor中表格的模式,它们完全匹配。

我完全清理了整个复制设置并重新进行了操作,但仍然停留在同一个桌子的同一个地方。

之前有没有遇到过这个?问我是否需要更多我能提供的信息。

1 个答案:

答案 0 :(得分:1)

我找到了原因。这是由于发布者和订阅者的模式不匹配。 在所述表中,列具有数据类型(date(datetime),并且当复制脚本化该表的模式时,它被编写为date脚本,因此在应用快照时订阅者,该字段的数据类型为{{ 1}}。

当数据从datetime复制到date字段时,会导致上述错误。

我在订阅者端对数据类型进行了必要的更改,并且事情已得到修复,