Sql-Server

BCP - 不同的架構

  • September 5, 2017

我為一個 SQL Server 數據庫實現了事務複製(非 SQL Server Publishers - Oracle)。假設發布者:A,B 訂閱者:C

筆記:

  • 我無法修改 Oracle 數據庫。
  • 發布者俱有相同的數據庫架構。
  • 在訂閱者上,我有相同的表,還有一列“發布者”來標識該行的來源。

我使用 After-Snapshot 腳本為發布者 A 的初始載入創建和填充此列。

此外,為發布者 B 創建了一個(快照後)腳本以填充該列。

當我為 A 做第一個快照時,它可以工作,而我的 B 的批量載入失敗並出現以下錯誤:

複製-複製分發子系統:代理 AgentName 失敗。該程序無法批量複製到表“dbo”。“僱員”

錯誤日誌:錯誤:14151,嚴重性:18,狀態:1。

複製監視器源:MSSQL_REPL,錯誤號:MSSQL_REPL20037)

有人有想法嗎?是否由於 B 和 C 之間的架構差異,因為當 A 進行批量載入時沒有表,首先我創建表,然後進行初始載入,執行更改表以添加列,更新值以準備就緒第二次批量裝載?

我不確定事務複製的限制,但是使用 BCP,您可以在表上創建一個視圖,該視圖僅包含 BCP 文件中存在的列,並載入到該視圖而不是表中。您目前如何定義發布者列的數據?

它失敗是因為快照代理正在生成一個包含該額外列的 bcp 文件,當它針對發布者 B 執行時。分發代理正在嘗試將一個少一列的 bcp 文件應用到訂閱者表中。我認為您想要在沒有快照的情況下對其進行初始化。我不知道 Oracle 發布者是否支持,您可能需要嘗試一下。

引用自:https://dba.stackexchange.com/questions/105181