SQL 服务器事务复制 - 进程无法批量复制到

SQL Server Transactional replication - The process could not bulk copy into

所以我已经从发布者 (SQL Server 2014) 分发者 (SQL Server 2014) 订阅者 (SQL Server 2008 R2) 设置了 T-replication 并使用快照对其进行了初始化.

检查复制监视器我发现快照代理已成功完成并且日志 Reader 代理是 运行。

现在在 'Distributor to Subscriber History' 选项卡中,就在 'Undistributed Commands' 选项卡旁边

我收到以下错误:

The process could not bulk copy into table '"dbo"."BEAMDATA"'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20037)
Get help: http://help/MSSQL_REPL20037
End of file reached, terminator missing or field data incomplete
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 "LOWIS_BUCT"."dbo"."BEAMDATA" in "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\ReplData\unc\LOWISBUCT_CSSQLDB_BUCT_CSSQLDB_BUCT_ALL_TABLES160826064516\BEAMDATA_34#1.bcp" -e "errorfile" -t"\n\n" -r"\n<,@g>\n" -m10000 -SLOWISTSTSQL -T -w (Source: MSSQLServer, Error number: 20253)
Get help: http://help/20253

我认为这可能是某种数据溢出,因此检查了 Publisher 和 Distributor 的 table 架构,它们完全匹配。

我完全清理了整个复制设置并重新做了它,但仍然停留在同一个地方table。

有人遇到过这个吗?问我是否需要我提供的更多信息。

我找到了原因。这是由于发布者和订阅者的模式不匹配。 在所述 table 中,列的数据类型为 (date(datetime),当复制为此 table 编写架构脚本时,它被编写为 date 因此在订阅者应用快照时,字段的数据类型为 date.

当数据从日期时间复制到日期字段时,导致上述错误。

我在订阅者端对数据类型进行了必要的更改,事情得到了解决,

我有一个类似的错误和问题“sql 复制 repl20037 字段大小太大”。我发现的是这个。我在 SQL Server 12.0 上使用本地 Sql Management Studio v18.10 设置订阅。这导致了批量复制问题和字段不匹配。解决方案:直接在源服务器上的 Mgmt Studio 上设置发布,并在目标服务器上直接在 Mgmt Studio 上设置订阅。