如何:針對非 SQL Server 訂閱者建立訂閱 (SQL Server Management Studio)

交易式複寫與快照式複寫支援向非 Microsoft SQL Server 訂閱者發行資料。若要為非 SQL Server 訂閱者建立訂閱:

  1. 在「SQL Server 散發者」上安裝並設定適當的用戶端軟體和 OLE DB 提供者。如需詳細資訊,請參閱<Oracle 訂閱者>和<IBM DB2 訂閱者>。

  2. 使用「新增發行集精靈」建立發行集。如需建立發行集的詳細資訊,請參閱<如何:建立發行集並定義發行項 (SQL Server Management Studio)>和<如何:從 Oracle 資料庫建立發行集 (SQL Server Management Studio)>。在「新增發行集精靈」中指定下列選項:

    • [發行集類型] 頁面上,選取 [快照集發行集][交易式發行集]

    • [快照集代理程式] 頁面上,清除 [立即建立快照集]

      為非 SQL Server 訂閱者啟用發行集後建立快照集,以確定「快照集代理程式」會產生適用於非 SQL Server 訂閱者的快照集與初始化指令碼。

  3. 使用 [發行集屬性 - <PublicationName>] 對話方塊,為非 SQL Server 訂閱者啟用發行集。本主題提供有關這個步驟的詳細資訊。如需有關 [發行集屬性] 對話方塊的詳細資訊,請參閱<發行集屬性 - <發行集>>。

  4. 使用「新增訂閱精靈」建立訂閱。本主題提供有關這個步驟的詳細資訊。

  5. (選擇性) 變更 pre_creation_cmd 發行項屬性,使資料表保留在訂閱者端。本主題提供有關這個步驟的詳細資訊。

  6. 產生發行集的快照集。本主題提供有關這個步驟的詳細資訊。

  7. 同步處理訂閱。如需詳細資訊,請參閱<如何:同步處理發送訂閱 (SQL Server Management Studio)>。

[!附註]

此處理套用於執行 Microsoft SQL Server 2005 和更新版本的「發行者」。

為非 SQL Server 訂閱者啟用發行集

  1. 連接到 SQL Server Management Studio 中的發行者,然後展開伺服器節點。

  2. 展開 [複寫] 資料夾,然後展開 [本機發行集] 資料夾。

  3. 以滑鼠右鍵按一下發行集,然後再按一下 [屬性]

  4. [訂閱選項] 頁面中,為 [允許非 SQL Server 訂閱者] 選項選取 [True] 值。選取此選項會變更某些屬性,使發行集能與非 SQL Server 訂閱者相容。

    [!附註]

    選取 [True] 會將 pre_creation_cmd 發行項屬性值設為 'drop'。這項設定會指定當複寫符合發行項中的資料表名稱時,應該要卸除「訂閱者」端的資料表。如果您在「訂閱者」端有想要保留的現有資料表,請針對每一個發行項使用 sp_changearticle 預存程序,並為 pre_creation_cmd 指定 'none' 值:sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'。

  5. 按一下 [確定]。將會提示您為發行集建立新快照集。如果不想此時建立快照集,請稍後使用下一個「如何」程序中描述的步驟。

為非 SQL Server 訂閱者建立訂閱

  1. 展開 [複寫] 資料夾,然後展開 [本機發行集] 資料夾。

  2. 以滑鼠右鍵按一下適當的發行集,然後再按一下 [新增訂閱]

  3. [散發代理程式位置] 頁面中,確定已選取 [在散發者端執行所有代理程式]。非 SQL Server 訂閱者不支援在「訂閱者」端執行代理程式。

  4. [訂閱者] 頁面中,按一下 [加入訂閱者] 然後按一下 [加入非 SQL Server 訂閱者]

  5. [加入非 SQL Server 訂閱者] 對話方塊中,選取「訂閱者」類型。

  6. [資料來源名稱] 中輸入值:

    • 對於 Oracle,該值是您設定的 Transparent Network Substrate (TNS) 的名稱。

    • 對於 IBM,該值可以是任何名稱。通常會指定「訂閱者」的網路位址。

    此精靈不會驗證在此步驟中輸入的資料來源名稱和在步驟 9 中指定的認證。為訂閱執行「散發代理程式」後,複寫才會使用它們。透過使用用戶端工具 (如 Oracle 的 sqlplus) 連接到「訂閱者」,來確定所有值都已經過測試。如需詳細資訊,請參閱<Oracle 訂閱者>和<IBM DB2 訂閱者>。

  7. 按一下 [確定]。在精靈的 [訂閱者] 頁面中,「訂閱者」即會顯示在 [訂閱者] 資料行中,且在 [訂閱資料庫] 資料行中只能讀取 [(預設的目的地)]

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

    • 對於 IBM DB2,在 DB2 連接字串的初始資料目錄屬性中指定資料庫,可在這個處理稍後描述的 [其他連接選項] 欄位中輸入。

  8. [散發代理程式安全性] 頁面中,按一下「訂閱者」旁的屬性按鈕 (),以存取 [散發代理程式安全性] 對話方塊。

  9. [散發代理程式安全性] 對話方塊中:

    • [處理帳戶][密碼][確認密碼] 欄位中,輸入「散發代理程式」應執行並與「訂閱者」建立本機連接所使用的 Microsoft Windows 帳戶和密碼。

      帳戶要求具有以下最小權限:散發資料庫中 db_owner 固定資料庫角色的成員;發行集存取清單 (PAL) 的成員;快照集共用的讀取權限;以及對 OLE DB 提供者之安裝目錄的讀取權限。如需有關 PAL 的詳細資訊,請參閱<保護發行者>。

    • [連接到訂閱者] 下的 [登入][密碼][確認密碼] 欄位中,輸入用來連接到「訂閱者」的登入和密碼。此登入必須已經設定,還必須具有在訂閱資料庫中建立物件的足夠權限。

    • [其他連接選項] 欄位中,以連接字串形式指定「訂閱者」的任何連接選項 (Oracle 不需要其他選項)。每個選項應以分號分隔。以下為 DB2 連接字串的範例 (分行符號僅為便於閱讀):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;
      Persist Security Info=False;Connection Pooling=True;
      

      字串中大多數選項,是特別針對您正在設定的 DB2,但 [將二進位視為字元處理] 選項應永遠設定為 False[初始資料目錄] 選項需要一個數值來指定訂閱資料庫。

  10. [同步排程] 頁面中,從 [代理程式排程] 功能表中選取「散發代理程式」的排程 (排程通常為 [連續執行])。

  11. [初始化訂閱] 頁面中,指定是否應初始化訂閱以及初始化的時間 (如果是的話):

    • 只有在已建立了所有物件,並且已將全部所需資料都新增到訂閱資料庫中之後,才能清除 [初始化]

    • [初始化時機] 資料行的下拉式清單中選取 [立即],以便使「散發代理程式」在此精靈完成後將快照集檔案傳送至「訂閱者」。選取 [第一次同步處理時],以使代理程式在排定下一次執行時傳送檔案。

  12. [精靈動作] 頁面中,選擇性地編寫訂閱指令碼。如需詳細資訊,請參閱<編寫複寫指令碼>。

將資料表保留在訂閱者端

  • 依預設,若啟用非 SQL Server 訂閱者的發行集,就會將 pre_creation_cmd 發行項屬性的值設定為 'drop'。這項設定會指定當複寫符合發行項中的資料表名稱時,應該要卸除「訂閱者」端的資料表。如果您在訂閱者端有想要保留的現有資料表,請針對每一個發行項使用 sp_changearticle 預存程序,並為 pre_creation_cmd 指定 'none' 值。sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

產生發行集的快照集

  1. 展開 [複寫] 資料夾,然後展開 [本機發行集] 資料夾。

  2. 以滑鼠右鍵按一下發行集,然後再按一下 [檢視快照集代理程式的狀態]

  3. [檢視快照集代理程式的狀態 - <Publication>] 對話方塊中,按一下 [啟動]

「快照集代理程式」完成產生快照集後,會顯示一個訊息,例如「[100%] 已產生了 17 個發行項的快照集」。