分享方式:


非 SQL Server 訂閱者

適用於:SQL Server

下列「非 SQL Server 訂閱者」可以使用發送訂閱來訂閱快照式和交易式發行集。 使用已列 OLE DB 提供者的最新版本,列出的每個資料庫之兩個最新版本可支援訂閱。

非 SQL Server 訂閱者的異質性複寫已被取代。 Oracle 發行已被取代。 若要移動資料,請使用異動資料擷取和 SSIS 建立方案。

警告

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

資料庫 作業系統 提供者
Oracle Oracle 支援的所有平台 Oracle OLE DB 提供者 (由 Oracle 提供)
IBM Db2 MVS、AS400、Unix、Linux 與 Windows (不包括 9.x) Microsoft Host Integration Server (HIS) OLE DB 提供者

Oracle 版本資訊:
SQL Server 支援下列交易式與快照式複寫的異質性情況:

  • 將資料從 SQL Server 發行到非 SQL Server 訂閱者。

  • 在 Oracle 之間發行資料的限制如下:

複寫 2016 或更早版本 2017 或更新版本
從 Oracle 複寫 只支援 Oracle 10g 或更早版本 只支援 Oracle 10g 或更早版本
複寫到 Oracle 最高到 Oracle 12c 不支援

非 SQL Server 訂閱者的異質性複寫已被取代。 Oracle 發行已被取代。 若要移動資料,請使用異動資料擷取和 SSIS 建立方案。

如需建立 Oracle 和 IBM Db2 之訂用帳戶的詳細資訊,請參閱 Oracle 訂閱者IBM Db2 訂閱者

非 SQL Server 訂閱者之考量

當複寫到「非 SQL Server 訂閱者」時,請記住下列考量:

一般考量

  • 複寫支援將資料表和索引檢視做為資料表發行至非「SQL Server 訂閱者」(索引檢視無法複寫為索引檢視)。

  • 在 [新增發行集精靈] 中建立發行集,然後使用 [發行集屬性] 對話方塊為非「SQL Server 訂閱者」啟用此發行集時,不會為非「SQL Server 訂閱者」指定訂閱資料庫中所有物件的擁有者,而對於「Microsoft SQL Server 訂閱者」,會設為發行集資料庫中對應物件的擁有者。

  • 如果發行集擁有「SQL Server 訂閱者」和「非 SQL Server 訂閱者」,則必須先為「非 SQL Server 訂閱者」啟用發行集,之後再建立「SQL Server 訂閱者」的任何訂閱。

  • 根據預設,由「快照集代理程式」為「非 SQL Server 訂閱者」產生的指令碼會在 CREATE TABLE 語法中使用未加引號的識別碼。 因此,名稱為 test 的已發行資料表會複寫為 TEST。 若要使用與發行集資料庫中資料表相同的大小寫,請使用「散發代理程式」的 -QuotedIdentifier 參數。 如果發行的物件名稱 (如資料表、資料行或條件約束) 包含空格或「非 SQL Server 訂閱者」端之資料庫版本中的保留字,則還必須使用 -QuotedIdentifier 參數。 如需有關此參數的詳細資訊,請參閱< 複寫散發代理程式>。

  • 「散發代理程式」執行時所用的帳戶必須具有 OLE DB 提供者安裝目錄的讀取權限。

  • 依預設,對於「非 SQL Server 訂閱者」,「散發代理程式」會針對訂閱資料庫使用 [(預設目的地)] 的值 (「散發代理程式」的 -SubscriberDB 參數):

    • 在 Oracle 中,伺服器最多只有一個資料庫,所以不需要指定資料庫。

    • 若為 IBM Db2,資料庫是透過 DB2 連接字串指定。 如需相關資訊,請參閱 為非 SQL Server 訂閱者建立訂閱

  • 如果「SQL Server 散發者」是在 64 位元平台上執行,則必須使用適當的 64 位元版本 OLE DB 提供者。

  • 複寫以 Unicode 格式移動資料,不論「發行者」與「訂閱者」上使用的定序/字碼頁為何。 在「發行者」和「訂閱者」之間複寫時,建議您選擇相容的定序/字碼頁。

  • 如果在發行集中新增或刪除發行項,則必須重新初始化「非 SQL Server 訂閱者」的訂閱。

  • 所有「非 SQL Server 訂閱者」支援之條件約束僅為:NULL 和 NOT NULL。 主索引鍵條件約束複寫為唯一的索引。

  • 不同資料庫以不同方式處理值 NULL,這會影響空白值、空字串和 NULL 的表示方式。 進而會影響插入到定義了唯一條件約束的資料行之值的行為。 例如,Oracle 在視為唯一的資料行中允許有多個 NULL 值,而 SQL Server 在唯一的資料行中只允許有一個 NULL 值。

    另一個因素是,當資料行定義為 NOT NULL 時,如何處理 NULL 值、空字串和空白值。 如需為「Oracle 訂閱者」解決此問題的詳細資訊,請參閱< Oracle 訂閱者>。

  • 移除訂閱時,與複寫相關的中繼資料 (交易序號資料表) 不會從非 SQL Server 訂閱者刪除。

符合訂閱者資料庫之要求

  • 發行的結構描述和資料必須符合「訂閱者」端資料庫的要求。 例如,如果非 SQL Server 資料庫的最大資料列大小小於 SQL Server,則必須確定已發行的結構描述和資料不會超過此大小。

  • 複寫到「非 SQL Server 訂閱者」的資料表將採用「訂閱者」端資料庫的資料表命名慣例。

  • 非 SQL Server 訂閱者不支援 DDL。 如需結構描述變更的詳細資訊,請參閱對發行集資料庫進行結構描述變更

複寫功能支援

  • SQL Server 提供兩種訂閱類型:發送訂閱和提取訂閱。 「非 SQL Server 訂閱者」必須使用發送訂閱,該訂閱中「散發代理程式」在「SQL Server 散發者」端執行。

  • SQL Server 提供兩種快照集格式:原生 bcp 模式以及字元模式。 「非 SQL Server 訂閱者」需要字元模式快照集。

  • 「非 SQL Server 訂閱者」不能使用立即更新或佇列更新訂閱,或成為點對點拓撲中的節點。

  • 「非 SQL Server 訂閱者」不能從備份中自動初始化。