非 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 訂閱者」不能從備份中自動初始化。