複寫程式設計概念
適用於:SQL ServerAzure SQL 受控執行個體
開發使用複寫功能的應用程式之前,您應該遵循下列一般規劃步驟:
定義您的複寫拓撲。
定義應用程式功能。
規劃安全性。
選擇開發環境。
選擇適當的複寫程式設計介面。
本主題的其餘部分會更詳細地描述這些步驟。 為了協助說明規劃程式,已包含範例。
定義複寫拓撲
程式設計複寫的第一個步驟是定義應用程式的複寫拓撲。 如果您要撰寫將使用現有複寫拓撲的應用程式,例如存取現有訂閱者資料的用戶端應用程式,您應該移至下一個步驟。
注意
在某些情況下,部署複寫拓撲將是應用程式的唯一用途。
您定義的複寫拓撲取決於許多因素,包括下列各項:
是否需要更新複寫的資料,以及由誰更新。
您的資料散發需要關於一致性、自主性和延遲。
複寫環境,包括商務使用者、技術基礎結構、網路和安全性,以及資料特性。
複寫和複寫選項的類型。
複寫拓撲及其與複寫類型一致的方式。
如果您不熟悉 Microsoft SQL Server 複寫,請參閱 複 寫類型。
定義應用程式功能
定義複寫拓撲之後,您應該決定應用程式將提供的功能。 這些功能的範圍可以從腳本,將訂用帳戶同步處理至具有使用者介面的應用程式,以設定複寫。 複寫支援下列一般程式設計工作:
設定複寫。
同步處理訂閱者。
維護複寫拓撲。
監視複寫拓撲。
針對複寫進行疑難排解。
它也會藉由結合複寫功能與其他 SQL Server 所提供的功能來擴充您的應用程式。 下表醒目提示在複寫應用程式中可能提供的一些擴充功能。
功能 | 範例 |
---|---|
使用 SQL Server 管理物件的伺服器管理 (SMO) | 應用程式,可讓系統管理員在複寫拓撲中附加和設定資料庫做為發行者。 |
使用 ADO.NET 進行資料存取 | 可讓使用者在離線時以程式設計方式存取和變更本機訂閱者資料庫中複寫的銷售資料,然後按一下按鈕來連線和同步處理提取訂閱的應用程式。 |
規劃安全性
安全性在任何應用程式中都很重要,在撰寫任何程式碼之前,應該先完成安全性規劃。 應用程式安全性可以分成三個主要部分:保護資料庫、保護複寫,以及撰寫安全程式碼。
下列主題提供安全性的相關資訊:
選擇開發環境
開發複寫應用程式時,需要考慮三個基本開發環境。 每個開發環境都能夠存取相同的複寫功能,但有一些例外狀況。 複寫應用程式可以在下列每個環境中開發。
Managed 程式碼
利用 .NET Framework 程式設計與 .NET Common Language Runtime (CLR) 優點的物件導向開發環境。 Managed 程式碼是 .NET 開發與 SQL Server 應用程式的建議程式設計環境。 受控複寫介面可在不需要知道 Transact-SQL 的情況下,以物件導向的方式對複寫管理進行程式設計,而且在執行腳本無法使用的複寫代理程式時,也會提供一些回呼功能。 Managed 程式碼是開發可重複使用元件和使用者介面應用程式的最佳環境。
指令碼
以 Transact-SQL 腳本中的複寫系統預存程式或批次檔中命令的形式執行一系列命令的簡單應用程式。 雖然您可以使用 SQL Server 同進程受控提供者在 Managed 環境中執行腳本,但相同的功能可以使用 Managed 複寫介面來取得,這也會提供回呼功能。 腳本是執行工作的最佳環境,這些工作只會執行幾次,而且不需要回呼功能,例如安裝複寫伺服器。
機器碼
利用直接存取系統或 COM 物件的物件導向開發環境,讓程式碼不受 CLR 管理。 原生程式碼複寫介面已被取代或停止。 如需詳細資訊,請參閱 SQL Server 複 寫或 複寫回溯相容性 中已被取代的功能。
選擇適當的複寫程式設計介面
最後的規劃步驟是選擇適當的複寫程式設計介面,以實作所選開發環境所需的複寫功能。 下表顯示可用的複寫程式設計介面。
介面 | 環境 | 用途 |
---|---|---|
複寫管理物件概念 | Managed 程式碼 | 管理、監視和同步處理。 |
Microsoft.SqlServer.Replication | Managed 程式碼 | 同步處理。 |
Microsoft.SqlServer.Replication.BusinessLogicSupport | Managed 程式碼 | 建立商務邏輯處理常式,以整合自訂邏輯與合併同步處理常式。 |
複寫預存程式 (Transact-SQL) | 指令碼 | 管理和監視。 |
Replication Agent Executables Concepts | 指令碼 | 同步處理。 |
範例
在 Adventure Works 中,必須針對全球 200 名銷售代表發佈資料。 銷售代表經常旅行,而且需要使用膝上型電腦或個人數位助理(PDA)來變更客戶資料並新增訂單。 當銷售代表將膝上型電腦連線到網路時,變更將需要與發行者同步處理。
針對此應用程式,規劃步驟可能如下所示:
此應用程式的複寫拓撲已經存在。 不過,必須在用戶端建立新的提取訂閱。 發行集應該使用參數化篩選,將一組唯一的資料複寫至每個銷售代表。
除了銷售應用程式所需的一般資料存取之外,此應用程式應該可讓銷售人員按一下按鈕來視需要同步處理提取訂閱。 由於銷售代表會安裝並執行應用程式,因此也必須能夠設定訂用帳戶,並在用戶端套用初始快照集。 或者,應用程式會使用 Windows 提供的基礎結構來感知無線連線,以在偵測到連線時自動同步處理訂閱。
請遵循複寫的所有安全性指導方針,包括連線到發行者時使用 Windows 驗證和虛擬私人網路(VPN)。 如果實作 Web 同步處理,請使用傳輸層安全性 (TLS),先前稱為安全通訊端層 (SSL), 連線。 如需詳細資訊,請參閱 Configure Web Synchronization。
為了利用 .NET Framework 的功能,應用程式是使用 Managed 程式碼語言所開發。
根據這些需求,複寫管理物件 (RMO) 受控介面可以提供此應用程式所需的所有複寫功能。
此範例案例已在可下載 SQL Server 的 AdventureWorks 範例應用程式中實作。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應