從 Oracle 資料庫建立發行集
本主題描述如何使用 SQL Server Management Studio、Transact-SQL 或 Replication Management Objects (RMO),在 SQL Server 2012 中從 Oracle 資料庫建立發行集。
本主題內容
開始之前:
必要條件
若要從 Oracle 資料庫建立發行集,請使用:
SQL Server Management Studio
Transact-SQL
開始之前
必要條件
- 建立發行集之前,您必須先在「Microsoft SQL Server 散發者」上安裝 Oracle 軟體,還必須設定 Oracle 資料庫。 如需詳細資訊,請參閱<設定 Oracle 發行者>。
[Top]
使用 SQL Server Management Studio
使用「新增發行集精靈」從「Oracle 資料庫」建立快照式或交易式發行集。
第一次從 Oracle 資料庫建立發行集時,必須在「SQL Server 散發者」端識別「Oracle 發行者」(如果是同一資料庫的後續發行集,則不需要執行這個動作)。 可以從「新增發行集精靈」或 [散發者屬性 - <Distributor>] 對話方塊來完成「Oracle 發行者」的識別;本主題會顯示 [散發者屬性 - <Distributor>] 對話方塊。
若要在 SQL Server 散發者端識別 Oracle 發行者
在 SQL Server Management Studio 中,連接到「Oracle 發行者」將其做為「散發者」使用的 SQL Server 執行個體,然後展開伺服器節點。
以滑鼠右鍵按一下 [複寫] 資料夾,然後按一下 [散發者屬性]。
在 [散發者屬性 - <Distributor>] 對話方塊的 [發行者] 頁面上,按一下 [加入],然後按一下 [加入 Oracle 發行者]。
在 [連接到伺服器] 對話方塊上,按一下 [選項] 按鈕。
在 [登入] 索引標籤上:
在 [伺服器執行個體] 下拉式方塊中輸入 Oracle 資料庫執行個體名稱或選取 [瀏覽其他]。
選取 [Oracle 標準驗證] (建議選項) 或 [Windows 驗證]。
如果您選取 [Windows 驗證]:必須使用 Windows 認證將 Oracle 伺服器設定為允許連接 (如需詳細資訊,請參閱 Oracle 文件集);並且您的目前登入帳戶必須與您為複寫管理的使用者結構描述指定的 Microsoft Windows 帳戶相同。
如果您選取 [Oracle 標準驗證],則於設定期間輸入您在「Oracle 發行者」上建立的複寫管理使用者結構描述之登入和密碼。
在 [連接屬性] 索引標籤上,選取 [閘道] 或 [完整] 的「發行者」類型。
[完整] 選項設計用來為 Oracle 發行提供具備全部支援功能之快照式和交易式發行集。 [閘道] 選項在複寫充當系統間閘道的情況下提供特定的設計最佳化以提升效能。 如果您計劃發行多個交易式發行集中的同一個資料表,則不能使用 [閘道] 選項。 如果您選取 [閘道],則資料表最多只能在一個交易式發行集中顯示,但可以在任意數目的快照式發行集中顯示。
按一下 [連接],建立與「Oracle 發行者」的連接,並為複寫設定該連接。 關閉 [連接到伺服器] 對話方塊,您將返回至 [散發者屬性 - <Distributor>] 對話方塊。
[!附註]
如果網路組態有問題,此時您會收到一條錯誤訊息。 如果您遇到連接到 Oracle 資料庫的問題,請參閱在<Oracle 發行者疑難排解>中的「SQL Server 散發者無法連接到 Oracle 資料庫執行個體」一節。
按一下 [確定]。
若要從 Oracle 資料庫建立發行集
連接到「Oracle 發行者」將其做為「散發者」使用的 SQL Server 執行個體,然後展開伺服器節點。
展開 [複寫] 資料夾。
以滑鼠右鍵按一下 [本機發行集] 資料夾,然後按一下 [新增 Oracle 發行集]。
在「新增發行集精靈」的 [Oracle 發行者] 頁面,選取「Oracle 發行者」。 如果「Oracle 發行者」未顯示,按一下 [新增 Oracle 發行者],這會引領您繼續先前程序之後的步驟。
在 [發行集類型] 頁面上,選取 [快照集發行集] 或 [交易式發行集]。
在 [發行項] 頁面上,選取您要發行的資料庫物件。
或者,透過展開資料表,然後清除一個或多個資料行之核取方塊的方式,篩選出資料表的資料行。 如有必要,按一下 [發行項屬性] 以檢視和修改發行項屬性,並指定替代資料類型對應。 如需資料類型對應的詳細資訊,請參閱<指定 Oracle 發行者的資料類型對應>。
在 [篩選資料表的資料列] 頁面,選擇性地套用篩選以發行一個或多個資料表的資料子集。
僅當在訂閱資料庫中已建立了所有物件,且已加入了所有需要的資料時,才能在 [快照集代理程式] 頁面清除 [立即建立快照集]。
在 [代理程式安全性] 頁面,指定「快照集代理程式」的認證 (針對所有發行集) 和「記錄讀取器代理程式」的認證 (針對交易式發行集)。 代理程式會使用您指定的 Microsoft Windows 帳戶之內容,執行並與「SQL Server 散發者」建立連接。 代理程式會使用您指定為複寫管理使用者結構描述的帳戶內容,與 Oracle 資料庫建立連接。 如需詳細資訊,請參閱<設定 Oracle 發行者>。
如需各代理程式所需權限的詳細資訊,請參閱<複寫代理程式安全性模型>和<複寫安全性最佳做法>。
在 [精靈動作] 頁面上,選擇性地為發行集編寫指令碼。 如需詳細資訊,請參閱<編寫複寫指令碼>。
在 [完成精靈] 頁面上,指定發行集的名稱。
[Top]
使用 Transact-SQL
當 Oracle 資料庫已經設定為發行者之後,您可以使用系統預存程序來建立交易式或快照式發行集,就像是從 Microsoft SQL Server 發行者建立一樣。
建立 Oracle 發行集
將 Oracle 資料庫設定為發行者。 如需詳細資訊,請參閱<設定 Oracle 發行者>。
如果遠端散發者不存在,請設定遠端散發者。 如需詳細資訊,請參閱<設定發行和散發>。
在 Oracle 發行者將使用的遠端散發者上,執行 sp_adddistpublisher (Transact-SQL)。 針對 @publisher 指定 Oracle 資料庫執行個體的透明網路基質 (Transparent Network Substrate,TNS) 名稱,以及針對 @publisher_type 指定 ORACLE 或 ORACLE GATEWAY 的值。 指定當從 Oracle 發行者連接到遠端 SQL Server 散發者時所使用的安全性模式,如下列其中一項:
若要使用預設值 Oracle 標準驗證,請將 @security_mode 指定為 0 的值、將 @login 指定為組態設定期間在 Oracle 發行者上建立之複寫管理使用者結構描述的登入,並將 @password 指定為密碼。
安全性注意事項 可能的話,系統會在執行階段提示使用者輸入安全性認證。 如果您將認證儲存在指令碼檔案中,必須保護該檔案免於未經授權的存取。
若要使用「Windows 驗證」,請將 @security_mode 指定為 1 的值。
[!附註]
若要使用「Windows 驗證」,必須使用 Windows 認證將 Oracle 伺服器設定為允許連接 (如需詳細資訊,請參閱 Oracle 文件集);並且您目前的登入帳戶必須與您為複寫管理使用者結構描述指定的 Microsoft Windows 帳戶相同。
針對發行集資料庫建立記錄讀取器代理程式作業。
如果您不確定發行的資料庫是否有記錄讀取器代理程式作業存在,請在散發資料庫上由 Oracle 發行者使用的散發者上執行 sp_helplogreader_agent (Transact-SQL)。 針對 @publisher 指定「Oracle 發行者」的名稱。 如果結果集是空的,就必須建立記錄讀取器代理程式作業。
如果記錄讀取器代理程式作業已存在發行集資料庫中,請繼續進行步驟 5。
在散發資料庫上由 Oracle 發行者使用的散發者上,執行 sp_addlogreader_agent (Transact-SQL)。 針對 @job_login 和 @job_password 指定此代理程式執行時所用的 Windows 認證。
[!附註]
@job_login 參數必須符合步驟 3 中所提供的登入。 請勿提供發行者安全性資訊。 記錄讀取器代理程式會使用步驟 3 中所提供的安全性資訊連接到發行者。
在散發資料庫的散發者上,執行 sp_addpublication (Transact-SQL) 來建立發行集。 如需詳細資訊,請參閱<建立發行集>。
在散發資料庫的散發者上,執行 sp_addpublication_snapshot (Transact-SQL)。 針對 @publication 指定步驟 4 中所使用的發行集名稱,以及針對 @job_name 和 @password 指定快照集代理程式執行時所使用的 Windows 認證。 若要在連接到發行者時使用「Oracle 標準驗證」,您也必須針對 @publisher_security_mode 指定 0 的值,以及針對 @publisher_login 和 @publisher_password 指定 Oracle 登入資訊。 這麼做會為發行集建立快照集代理程式作業。
[Top]
請參閱
工作
設定 Oracle 發行者的交易集作業 (複寫 Transact-SQL 程式設計)