Sql-Server
在具有多個訂閱者的 SQL Server 中使用合併複製時為每個訂閱者選擇特定表
我正在使用 SQL Server 2017 的合併複製。
我有一個發布者和兩個訂閱者(全部是 3 個數據庫伺服器)。
我需要將不同的表複製到每個訂閱者。
這可能嗎?
是的,這是可能的 - 您創建 3 個不同的發布 - 在每個發布中,您只為每個伺服器添加您想要的相應表。
其他表格將在其他出版物中,而不是在這個出版物中。
或者,在合併複製中,您可以設置過濾器,並且每個訂閱者只會看到您定義的特定分區。
下面這個例子來自這篇文章:
添加表以將複製與參數化的行過濾器合併。
按照參考文章中的步驟配置合併發布並將表添加到發布
在添加過濾器步驟添加下面的過濾器。
SELECT <published_columns> FROM [dbo].[UserDetails] WHERE [UserOrg] = HOST_NAME()
發佈設置完成後,為合併複製生成快照。生成快照後導航到發布,右鍵點擊並點擊屬性 -> 數據分區
點擊添加並輸入分區值,即 ORG1,然後點擊確定。到目前為止,我只添加了一個分區 ORG1。我們可以根據訂閱者添加更多內容。例如,如果我有一個帶有 ORG2 分區的訂閱者,那麼我們可以在此處為 ORG2 添加分區並生成一個分區快照,該快照將應用於特定訂閱者。
現在點擊立即生成選定的快照,然後點擊確定。
右鍵點擊合併複製中的發布,啟動 SQL Server 複製監視器並確保分區快照也已完成。
現在添加訂閱。請按照以下文章中的步驟添加訂閱者:合併複製 -什麼被複製,什麼不被複製
在添加訂閱者時,指定訂閱者的 HOST_NAME() 值,以便僅將具有 UserOrg 值 ORG1 的行複製到訂閱者。