合併式複寫的銷售訂單範例
更新: 2006 年 4 月 14 日
此讀我檔案詳細描述了如何安裝和執行「銷售訂單」範例。此檔案還詳細描述了此範例的任何已知問題。
狀況
此範例強調合併式複寫拓撲用以將資料傳遞至行動使用者,它還示範 SQL Server 2005 中合併式複寫的程式設計功能。此範例是以 Windows Form 為基礎的應用程式,使用標準 Microsoft 資料存取技術和合併式複寫,讓銷售人員能在定期與總部進行同步處理期間維護自己的區域資料。執行所有版本之 SQL Server 2005 的「訂閱者」支援此範例。發行集也支援 SQL Server Compact Edition 訂閱者。如需有關此範例狀況的詳細資訊,請參閱<Sales Orders Sample Scenario>。
語言
- C#
- Transact-SQL
功能
「銷售訂單」範例示範下列合併式複寫的功能:
- 複寫管理物件 (RMO)。
- 參數化資料列篩選。
- 預先計算的資料分割。
- 用戶端要求的資料分割快照集。
- 以發行項類型為基礎的效能最佳化。
- SQL Server Compact Edition 和 Express Edition 訂閱者。
- 自動識別範圍管理。
- 商務邏輯處理常式。
- Web 同步處理 (選擇性)。
如需有關如何在範例中示範這些複寫功能的詳細資訊,請參閱<Sales Orders Sample Implementation Details>。
必要條件
執行此範例之前,請確定已安裝下列軟體:
- SQL Server 2005 Service Pack 1 (SP1),包括下列選擇性安裝的元件:
- SQL Server Database Services (包括複寫)
- 用戶端連接元件
- 程式設計模型
- 開發工具 (包括 SDK)
- AdventureWorks 範例 OLTP 資料庫。此範例資料庫包含在 SQL Server 2005 中,也可以從 SQL Server 開發人員中心取得。
- SQL Server 2005 範例。這些範例包含在 SQL Server 2005 中,也可以從 SQL Server 開發人員中心取得。如需詳細資訊,請參閱<安裝範例>。
- .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免費取得 .NET Framework SDK。如需詳細資訊,請參閱<安裝 .NET Framework SDK>。
附註: 若要產生初始快照集,您必須在發行者端套用 SQL Server 2005 SP1。若要在沒有套用 SP1 的 SQL Server 2005 發行者上使用這個範例,您必須先卸除 SalesOrderHeader 資料表上的 FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID FOREIGN KEY 條件約束,然後在沒有 ON DELETE CASCADE 子句的情況下重新建立此條件約束。
必要權限
設定和執行「銷售訂單」範例所需的權限是以複寫安全性需求為基礎的,如下所示:
- 若要執行 InstallSalesOrdersSample.bat (用於設定複寫、建立 AdvWorksSalesOrders 發行集和產生初始快照集),您的 Windows 帳戶必須是「發行者」端 sysadmin 固定伺服器角色的成員。
- 「銷售訂單」範例執行各種 Database Engine 和複寫工作,包括建立 AdventureWorksLocal 資料庫、建立本機「訂閱」,以及執行「合併代理程式」來初始化、重新初始化或同步處理訂閱。若要在「訂閱者」端成功執行範例可執行檔 (SalesOrders.exe),您的 Windows 帳戶至少必須具有在「訂閱者」端的 CREATE DATABASE 權限。
附註: 當本機資料庫和訂閱存在時,您的 Windows 帳戶至少必須是在「訂閱者」端 AdventureWorksLocal 資料庫之 db_owner 固定資料庫角色的成員,才能執行應用程式。 - 若要初始化訂閱並和「發行者」同步處理資料,用來連接至「發行者」(使用 Web 同步處理時則是 Web 伺服器) 的 Windows 帳戶必須符合下列需求:
- 在發行者端具有與發行集資料庫使用者關聯的有效登入。
- 在散發者端具有與散發資料庫使用者 (或 guest 使用者) 關聯的有效登入。
- 屬於 AdvWorksSalesOrders 發行集之發行集存取清單 (PAL) 的成員。
建立和設定範例
若要建立範例專案並設定複寫拓撲,您需要執行下列動作:
- 在「發行者」端執行複寫安裝指令碼。
- (選擇性) 設定 Internet Information Services (IIS) 伺服器以支援合併式複寫的 Web 同步處理。如果未執行這個動作,您將無法使用範例的 Web 同步處理功能。
- 在「訂閱者」端,修改範例之 app.config 檔案的組態設定。
- 在「訂閱者」端,使用 Visual Studio 2005 或 .NET Framework 2.0 SDK 建立範例。
- 在「訂閱者」端,將 BusinessLogic.dll 組件的副本置於 C:\Program Files\Microsoft SQL Server\90\COM 目錄。當使用 Web 同步處理時,您還必須將 BusinessLogic.dll 的副本置於 Web 伺服器上的 C:\Program Files\Microsoft SQL Server\90\COM 目錄。
若要設定發行者端的銷售訂單範例
請確定已安裝 AdventureWorks 範例資料庫且已附加該資料庫。若未附加資料庫,請參閱《SQL Server 線上叢書》的<安裝 AdventureWorks 範例資料庫和範例>。
請確定已安裝 SQL Server Database Engine 範例。
如需詳細資訊,請參閱<安裝範例>。
請確定正在執行 SQL Server Agent。您可以檢視服務狀態並從 SQL Server Management Studio 中的 [物件總管] 啟動此服務。
導覽到「銷售訂單」範例指令碼的安裝位置。預設為 C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts。
(選擇性) 設定用於 Web 同步處理之「發行者」端或伺服器端的「安全通訊端層 (SSL)」。IIS 伺服器與所有訂閱者之間的通訊需要 SSL。若要設定 SSL,請為要使用的 IIS 伺服器指定伺服器憑證。
執行 InstallSalesOrdersSample.bat,並在系統提示時,輸入執行「快照集代理程式」作業所用之 Windows 帳戶的登入 (使用區分大小寫的格式 "DOMAIN\login") 和密碼。這會呼叫 sqlcmd.exe 以執行 CreateAdvWorksSalesOrdersPublication.sql,其會執行下列動作:
- 檢查複寫是否已在本機伺服器上設定,如果沒有,則會使用散發資料庫將其設定為具有本機「散發者」的「發行者」。
- 拖曳並重新建立用於用戶端資料存取的預存程序和使用者自訂功能。
- 拖曳並重新建立「AdvWorksSalesOrders 發行集」。
- 將發行項加入至發行集。
- 註冊「散發者」端的商務邏輯處理常式。
- 啟動「快照集代理程式」作業以產生初始快照集。
批次檔也可以自動設定「發行者」端的虛擬目錄以支援 Web 同步處理。如果您選擇在安裝期間不設定「發行者」端的虛擬目錄,或您計劃使用不同的 Web 伺服器,則您必須在使用範例的 Web 同步處理功能之前執行「設定 Web 同步處理精靈」。
(選擇性) 執行「設定 Web 同步處理精靈」以設定 IIS 伺服器支援 Web 同步處理。如果 InstallSalesOrdersSample.bat 已成功建立虛擬目錄或如果您將不使用 Web 同步處理,則略過此步驟。如需有關使用這個精靈的完整指示,請參閱<如何:設定 Web 同步處理的 IIS>。
繼續之前,請確定 AdvWorksSalesOrders 發行集的「快照集代理程式」作業已成功完成。這個作業的狀態可使用「複寫監視器」來檢視。如需有關使用「複寫監視器」來檢視「快照集代理程式」作業之狀態的詳細資訊,請參閱《SQL Server 線上叢書》的<如何:檢視與發行集相關聯之代理程式的資訊並執行工作 (複寫監視器)>。
若要建立和設定訂閱者端的銷售訂單範例
在命令提示字元中,瀏覽至 SQL Server 2005 範例安裝目錄。預設值是 C:\Program Files\Microsoft SQL Server\90\Samples。
在 .NET Framework 或 Microsoft Visual Studio 2005 命令提示字元中執行下列命令:
sn -k SampleKey.snk
附註: 如果先前已建立此金鑰供另一個範例使用,您可以略過這個步驟。 瀏覽至 Microsoft Visual C# 中「銷售訂單」範例方案的安裝位置。預設為 C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\CS。
開啟 Visual Studio 2005 中的 SalesOrders.sln 方案檔。
建立專案。
在專案輸出資料夾中,編輯 SalesOrders.exe.config 檔並變更如下:
- 使用本機伺服器的名稱取代「訂閱者」索引鍵的值。
- 使用先前設定為「發行者」之伺服器的名稱取代「發行者」索引鍵的值。
- (選擇性) 使用 Web 同步處理連接到「發行者」時取代 WebSynchronizationUrl 索引鍵的值。這還可以在執行階段執行。
- (選擇性) 當使用連接後隨即同步處理功能時,使用 SyncWhenConnectedInterval 索引鍵設定同步處理之間的時間間隔 (以秒為單位)。
附註: 複寫不支援伺服器名稱的 localhost。 將 BusinessLogic.dll 組件的副本置於 C:\Program Files\Microsoft SQL Server\90\COM 目錄。
(選擇性) 當使用 Web 同步處理時,請將 BusinessLogic.dll 組件的副本置於 Web 伺服器上的 C:\Program Files\Microsoft SQL Server\90\COM 目錄中。
執行範例
若要執行銷售訂單範例和同步處理資料
請確定遠端連接已啟用於「發行者」端及「訂閱者」端 (TCP/IP 或「具名管道」) 且 SQL Server Agent 服務正在執行。
(選擇性) 在「訂閱者」端,遵循<How to: Configure Web Synchronization for Merge Replication (Replication Transact-SQL Programming)>中「若要設定訂閱者端的用戶端憑證」的指示,透過連接到處於診斷模式的 Web 伺服器測試 Web 同步處理連接。
附註: 如果在使用 Web 同步處理時發生 HTTP 錯誤,請開啟 Internet Explorer,並在 [工具] 功能表中選取 [網際網路選項]、[連接] 和 [區域網路設定]。確定已停用 [自動偵測設定]。 從 Visual Studio 2005 或命令提示字元啟動 SalesOrders.exe。當第一次執行應用程式時,會建立訂閱資料庫和訂閱並啟動「合併代理程式」來初始化訂閱。
初始化訂閱資料之後,將載入 [銷售訂單] 表單,顯示屬於銷售人員 "adventure-works\garrett1" 之現有訂單的清單。
使用 [銷售訂單] 表單,您可以對銷售資料進行下列變更:
- 編輯銷售訂單資訊。
- 將新項目加入至銷售訂單。
- 從銷售訂單刪除項目。
- 變更銷售訂單中項目的訂購數量。
從 [同步處理] 功能表選取同步處理方法以同步處理訂閱。
(選擇性) 檢查 [連接後隨即同步處理] 以自動同步處理訂閱。使用 app.config 檔案中的 SyncWhenConnectedInterval 索引鍵設定背景同步處理的同步處理時間間隔。
附註: [連接後隨即同步處理] 功能無法在 Microsoft 平台上使用。如需詳細資訊,請參閱<Sales Orders Sample Implementation Details>。
若要使用銷售訂單範例的進階同步處理選項
在 [同步處理] 功能表的 [進階] 中,選擇下列其中一個選項:
- (選擇性) 選取重新初始化選項來重新初始化訂閱。
- (選擇性) 選取 [Web 同步處理選項 ] 並提供網際網路 URL 和用於透過安全 HTTPS 連接存取 Web 伺服器的「Windows 驗證」認證。若要使用此選項,您必須已設定 Web 同步處理的 IIS 伺服器。
附註: Web 同步處理不支援僅限上載或僅限下載的同步處理。啟用 Web 同步處理時,會停用 [僅限上載資料] 功能表項目。 - (選擇性) 選取 [取得訂閱狀態] 以檢視最新「合併代理程式」工作階段的結果。
移除範例
使用下列程序移除「銷售訂單」範例。
若要僅刪除訂閱
在「訂閱者」端,執行下列 Transact-SQL 指令碼以刪除提取訂閱。
-- This batch is executed at the Subscriber to remove -- the Sales Orders sample subscription. DECLARE @publisher AS sysname; -- change this value to the name of the Publisher server. SET @publisher = N'PUBSERVER'; USE [AdventureWorksLocal] EXEC sp_dropmergepullsubscription @publisher = @publisher, @publisher_db = N'AdventureWorks', @publication = N'AdvWorksSalesOrders'; GO
在「發行者」端,執行下列 Transact-SQL 指令碼以取消註冊提取訂閱。
-- This batch is executed at the Publisher to remove -- the Sales Orders sample subscription. DECLARE @subscriber AS sysname; -- change this value to the name of the Subscriber server. SET @subscriber = N'SUBSERVER'; USE [AdventureWorks] EXEC sp_dropmergesubscription @publication = N'AdvWorksSalesOrders', @subscriber = @subscriber, @subscriber_db = N'AdventureWorksLocal'; GO
若要移除銷售訂單範例
在發行者端,導覽到「銷售訂單」範例指令碼的安裝位置。預設為 C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts。
執行批次檔 RemoveSalesOrdersSample.bat。
當系統提示時,輸入 "Y" 並按 Enter 鍵,移除「發行者」端的所有複寫物件,移除訂閱資料庫中的所有複寫物件,並解除安裝「發行者」端的發行和散發。
重要事項: 當使用此指令碼時,將會移除所有複寫基礎結構。如果您已建立使用此「發行者」或「散發者」的其他發行集,則不要執行 DropAdvWorksSalesOrdersPublication.sql,而應手動移除 AdvWorksSalesOrders 發行集。如需詳細資訊,請參閱《SQL Server 線上叢書》中的<如何:刪除發行集 (SQL Server Management Studio)>或<How to: Delete a Publication (Replication Transact-SQL Programming)>。 在「訂閱者」端的 AdventureWorksLocal 資料庫上,執行 sp_removedbreplication (Transact-SQL)。
將資料庫內容變更為 master 資料庫並執行
DROP DATABASE AdventureWorksLocal
。
註解
範例只供教育目的之用。它們不能用於實際執行環境,而且從來沒有在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。若沒有系統管理員的權限,就不應該在實際 SQL Server 資料庫或報表伺服器上,連接或使用範例應用程式和組件。
請參閱
概念
其他資源
Planning for Replication Programming
複寫開發人員資訊中心
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|