如何在不重新启动整个进程的情况下删除 SQL Server 事务复制错误。我们大约有 10 亿

问题描述 投票:0回答:1

我们在大约 40 个表上设置了事务复制。除了大桌子之外,这对于小桌子来说效果很好。

我们的表中有大约 10 亿行,复制需要很长时间。在快照创建和批量数据移动的第一阶段,如果出现错误,整个过程需要再次运行。有没有办法在修复错误后仅同步剩余记录。

我们得到的错误是

`进程无法批量复制到表“xxx”中。 (来源:MSSQL_REPL,错误号:MSSQL_REPL20037) 获取帮助:[链接到帮助/MSSQL_REPL20037] 该系统找不到指定的文件。 要获取包含初始化订阅表时遇到的错误的详细信息的错误文件,请执行下面显示的 bcp 命令。有关 bcp 实用程序及其支持的选项的更多信息,请参阅 BOL。 (来源:MSSQLServer,错误号:20253) 获取帮助:[链接到帮助/20253] bcp “xxx” in “xxx” -e “错误文件” -t” “-r” <,@g> " -m10000 -SAZQC1W -T -w (来源:MSSQLServer,错误号:20253) 获取帮助:[链接到帮助/20253]

`

问题是我们在目标表中有相同的行,但复制会截断目标表并再次同步它。解决这个问题的最佳方法是什么?

我们已经在两台服务器之间设置了事务复制,这对所有小表都按预期工作,但对于大表我们遇到了问题。

sql-server synchronization replication large-data
1个回答
0
投票

错误 20253 的其他答案表明它可能是由于 SSMS 18 BCP 与旧版本的 SQL Server 不兼容引起的。尝试使用 SSMS 17。
这也可能是由于发布者和订阅者之间的架构不匹配造成的。

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

复制将在重新初始化期间截断并加载 BCP 语句,除非您通过自己对发布者表进行 ETL 手动初始化订阅者,或者从备份初始化订阅者:https://learn.microsoft.com/en-us/sql/relational -数据库/复制/从备份初始化事务订阅?view=sql-server-ver16

对于自动快照初始化方法,请确保为 bcp 文件启用压缩,并且您的网络和共享位置是可靠的服务器:https://learn.microsoft.com/en-us/sql/relational-databases/replication/快照选项?视图=sql-server-ver16

确保 SQL 服务帐户的权限直接授予共享文件夹而不是 AD 组。

类似 适用于超大表的 SQL Server 事务复制

© www.soinside.com 2019 - 2024. All rights reserved.