如何:針對非 SQL Server 訂閱者建立訂閱 (複寫 Transact-SQL 程式設計)

交易式複寫與快照式複寫支援向非 SQL Server 訂閱者發行資料。您可以使用複寫預存程序,以程式設計的方式建立非 SQL Server 訂閱者的發送訂閱。如需有關支援之訂閱者平台的資訊,請參閱<非 SQL Server 訂閱者>。

安全性注意事項安全性注意事項

可能的話,會在執行階段提示使用者輸入安全性認證。如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

針對非 SQL Server 訂閱者的交易式或快照式發行集建立發送訂閱

  1. 同時在發行者和散發者上針對非 SQL Server 訂閱者安裝最近的 OLE DB 提供者。如需 OLE DB 提供者的複寫需求,請參閱<非 SQL Server 訂閱者>、<Oracle 訂閱者>、<IBM DB2 訂閱者>。

  2. 在發行集資料庫的發行者上,藉由執行 sp_helppublication (Transact-SQL) 來確認發行集支援非 SQL Server 訂閱者。

    • 如果 enabled_for_het_sub 的值為 1,表示支援非 SQL Server 訂閱者。

    • 如果 enabled_for_het_sub 的值為 0,請執行 sp_changepublication (Transact-SQL),為 @property 指定 enabled_for_het_sub,並為 @value 指定 true。

      [!附註]

      在將 enabled_for_het_sub 變更為 true 之前,您必須先卸除此發行集的任何現有訂閱。當此發行集同時支援更新訂閱時,您無法將 enabled_for_het_sub 設定為 true。變更 enabled_for_het_sub 會影響其他發行集屬性。如需詳細資訊,請參閱<非 SQL Server 訂閱者>。

  3. 在發行集資料庫的發行者上,執行 sp_addsubscription (Transact-SQL)。指定 @publication@subscriber@destination_db(預設目的地) 值、@subscription_typepush 值,以及 @subscriber_type (指定 OLE DB 提供者) 的值 3。

  4. 在發行集資料庫的發行者上,執行 sp_addpushsubscription_agent (Transact-SQL)。指定下列項目:

    • @subscriber@publication 參數。

    • @subscriber_db(預設目的地) 值。

    • 針對 @subscriber_provider@subscriber_datasrc@subscriber_location@subscriber_provider_string@subscriber_catalog 之非 SQL Server 資料來源的屬性。

    • 針對 @job_login@job_password 指定散發者上的散發代理程式執行時所用的 Microsoft Windows 認證。

      [!附註]

      使用「Windows 整合式驗證」建立的連接一律使用由 @job_login@job_password 指定的 Windows 認證。「散發代理程式」一律使用「Windows 整合式驗證」建立到「散發者」的本機連接。依預設,代理程式會使用「Windows 整合式驗證」連接到「訂閱者」。

    • (選擇性) @subscriber_security_mode 的值 0,以及 @subscriber_login@subscriber_password 的 OLE DB 提供者登入資訊。

    • 此訂閱之散發代理程式作業的排程。如需詳細資訊,請參閱<如何:指定同步排程 (複寫 Transact-SQL 程式設計)>。

    安全性注意事項安全性注意事項

     利用遠端「散發者」來建立「發行者」上的發送訂閱時,提供給所有參數的值 (包括 job_login 和 job_password) 都會以純文字格式傳給「散發者」。您應該先加密「發行者」及其遠端「散發者」之間的連接,再執行這個預存程序。如需詳細資訊,請參閱加密 SQL Server 的連接