我正在尝试复制到远程站点上的第四个订阅者。3 个订阅者在本地工作正常。另一个区别是这是来自 2008 r2 发布者和远程分发者的 2012 订阅者。
传递 bcp 命令时失败并出现以下错误。
该进程无法批量复制到表“dbo”。“FlightSchedule_tbl”。(来源:MSSQL_REPL,错误号:MSSQL_REPL0)
我尝试将 historyverbose 级别提高到 2,但这是我从代理历史记录中得到的唯一错误。我尝试重新创建快照,但这仍然在同一点失败...
这张表没有什么不寻常的地方,它有 500 万行,所以没有大量数据......
Column_name Type Computed Length
FlightId int no 4
OrigAirport char no 3
DestAirport char no 3
DeptDate datetime no 8
ArriveDate datetime no 8
Airline char no 10
SupplierId int no 4
UpdateRef int no 4
HarvestUpdateKey int no 4
ActiveFlag bit no 1
任何人都可以帮我诊断这个以获得有用的错误或提出问题可能是什么?这个数据中心的连接非常慢,这是我们试图解决的问题......这可能只是超时吗?
更新 - 我配置了一个仅包含此表的单独发布,并将详细日志记录设置为 2。然后我得到
错误消息:
进程无法批量复制到表“dbo”。“FlightSchedule_tbl”。(来源:MSSQL_REPL,错误号:MSSQL_REPL0)
现有连接被远程主机强行关闭。
未指定的错误
最大错误后无法发送批处理
TCP 提供程序:现有连接被远程主机强制关闭。(来源:MSSQLServer,错误号:10054)
通信链路故障(来源:MSSQLServer,错误号:10054)
所以看起来像数据中心之间的网络......奇怪的是它总是会在同一点死亡,这有什么原因吗?
目标服务器上的错误日志
错误:4014,严重性:20,状态:13
从网络读取输入流时发生致命错误。会话将被终止(输入错误:64,输出错误:0)。
如果链接错误,您必须覆盖 -QueryTimeOut 和 -KeepAliveMessageInterval 参数。检查 SQL Server 代理作业,确定复制作业,然后右键单击属性,然后单击步骤,编辑并在 Commend 末尾添加 -LoginTimeOut 120 -QueryTimeOut 7200 -KeepAliveMessageInterval 600
我找不到合理的解释为什么会发生这种情况,因为该出版物中还有其他更广泛的表,其中包含更多数据甚至 BLOB,并且它们复制得很好。所以我并没有真正提供这个作为答案,只是为处于类似情况的人提供一种可能的解决方法。
我不得不解决的解决方法是将文章分成自己的出版物,然后每当它失败时,它只需要在超时之前遍历已经交付的 12 个 bcp 文件,然后最终在 9 小时后过夜,它失败并重试足够多的时间,它最终爬过剩余的 BCP 文件。