共用方式為


合併式複寫的銷售訂單範例

更新: 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>。
    ms160955.note(zh-tw,SQL.90).gif附註:
    若要產生初始快照集,您必須在發行者端套用 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 權限。
    ms160955.note(zh-tw,SQL.90).gif附註:
    當本機資料庫和訂閱存在時,您的 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 目錄。

若要設定發行者端的銷售訂單範例

  1. 請確定已安裝 AdventureWorks 範例資料庫且已附加該資料庫。若未附加資料庫,請參閱《SQL Server 線上叢書》的<安裝 AdventureWorks 範例資料庫和範例>。

  2. 請確定已安裝 SQL Server Database Engine 範例。

    如需詳細資訊,請參閱<安裝範例>。

  3. 請確定正在執行 SQL Server Agent。您可以檢視服務狀態並從 SQL Server Management Studio 中的 [物件總管] 啟動此服務。

  4. 導覽到「銷售訂單」範例指令碼的安裝位置。預設為 C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts。

  5. (選擇性) 設定用於 Web 同步處理之「發行者」端或伺服器端的「安全通訊端層 (SSL)」。IIS 伺服器與所有訂閱者之間的通訊需要 SSL。若要設定 SSL,請為要使用的 IIS 伺服器指定伺服器憑證。

  6. 執行 InstallSalesOrdersSample.bat,並在系統提示時,輸入執行「快照集代理程式」作業所用之 Windows 帳戶的登入 (使用區分大小寫的格式 "DOMAIN\login") 和密碼。這會呼叫 sqlcmd.exe 以執行 CreateAdvWorksSalesOrdersPublication.sql,其會執行下列動作:

    • 檢查複寫是否已在本機伺服器上設定,如果沒有,則會使用散發資料庫將其設定為具有本機「散發者」的「發行者」。
    • 拖曳並重新建立用於用戶端資料存取的預存程序和使用者自訂功能。
    • 拖曳並重新建立「AdvWorksSalesOrders 發行集」。
    • 將發行項加入至發行集。
    • 註冊「散發者」端的商務邏輯處理常式。
    • 啟動「快照集代理程式」作業以產生初始快照集。

    批次檔也可以自動設定「發行者」端的虛擬目錄以支援 Web 同步處理。如果您選擇在安裝期間不設定「發行者」端的虛擬目錄,或您計劃使用不同的 Web 伺服器,則您必須在使用範例的 Web 同步處理功能之前執行「設定 Web 同步處理精靈」。

  7. (選擇性) 執行「設定 Web 同步處理精靈」以設定 IIS 伺服器支援 Web 同步處理。如果 InstallSalesOrdersSample.bat 已成功建立虛擬目錄或如果您將不使用 Web 同步處理,則略過此步驟。如需有關使用這個精靈的完整指示,請參閱<如何:設定 Web 同步處理的 IIS>。

  8. 繼續之前,請確定 AdvWorksSalesOrders 發行集的「快照集代理程式」作業已成功完成。這個作業的狀態可使用「複寫監視器」來檢視。如需有關使用「複寫監視器」來檢視「快照集代理程式」作業之狀態的詳細資訊,請參閱《SQL Server 線上叢書》的<如何:檢視與發行集相關聯之代理程式的資訊並執行工作 (複寫監視器)>。

若要建立和設定訂閱者端的銷售訂單範例

  1. 在命令提示字元中,瀏覽至 SQL Server 2005 範例安裝目錄。預設值是 C:\Program Files\Microsoft SQL Server\90\Samples。

  2. 在 .NET Framework 或 Microsoft Visual Studio 2005 命令提示字元中執行下列命令:

    sn -k SampleKey.snk

    ms160955.note(zh-tw,SQL.90).gif附註:
    如果先前已建立此金鑰供另一個範例使用,您可以略過這個步驟。
  3. 瀏覽至 Microsoft Visual C# 中「銷售訂單」範例方案的安裝位置。預設為 C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\CS。

  4. 開啟 Visual Studio 2005 中的 SalesOrders.sln 方案檔。

  5. 建立專案。

  6. 在專案輸出資料夾中,編輯 SalesOrders.exe.config 檔並變更如下:

    • 使用本機伺服器的名稱取代「訂閱者」索引鍵的值。
    • 使用先前設定為「發行者」之伺服器的名稱取代「發行者」索引鍵的值。
    • (選擇性) 使用 Web 同步處理連接到「發行者」時取代 WebSynchronizationUrl 索引鍵的值。這還可以在執行階段執行。
    • (選擇性) 當使用連接後隨即同步處理功能時,使用 SyncWhenConnectedInterval 索引鍵設定同步處理之間的時間間隔 (以秒為單位)。
    ms160955.note(zh-tw,SQL.90).gif附註:
    複寫不支援伺服器名稱的 localhost。
  7. 將 BusinessLogic.dll 組件的副本置於 C:\Program Files\Microsoft SQL Server\90\COM 目錄。

  8. (選擇性) 當使用 Web 同步處理時,請將 BusinessLogic.dll 組件的副本置於 Web 伺服器上的 C:\Program Files\Microsoft SQL Server\90\COM 目錄中。

執行範例

若要執行銷售訂單範例和同步處理資料

  1. 請確定遠端連接已啟用於「發行者」端及「訂閱者」端 (TCP/IP 或「具名管道」) 且 SQL Server Agent 服務正在執行。

  2. (選擇性) 在「訂閱者」端,遵循<How to: Configure Web Synchronization for Merge Replication (Replication Transact-SQL Programming)>中「若要設定訂閱者端的用戶端憑證」的指示,透過連接到處於診斷模式的 Web 伺服器測試 Web 同步處理連接。

    ms160955.note(zh-tw,SQL.90).gif附註:
    如果在使用 Web 同步處理時發生 HTTP 錯誤,請開啟 Internet Explorer,並在 [工具] 功能表中選取 [網際網路選項][連接][區域網路設定]。確定已停用 [自動偵測設定]
  3. 從 Visual Studio 2005 或命令提示字元啟動 SalesOrders.exe。當第一次執行應用程式時,會建立訂閱資料庫和訂閱並啟動「合併代理程式」來初始化訂閱。

  4. 初始化訂閱資料之後,將載入 [銷售訂單] 表單,顯示屬於銷售人員 "adventure-works\garrett1" 之現有訂單的清單。

  5. 使用 [銷售訂單] 表單,您可以對銷售資料進行下列變更:

    • 編輯銷售訂單資訊。
    • 將新項目加入至銷售訂單。
    • 從銷售訂單刪除項目。
    • 變更銷售訂單中項目的訂購數量。
  6. [同步處理] 功能表選取同步處理方法以同步處理訂閱。

  7. (選擇性) 檢查 [連接後隨即同步處理] 以自動同步處理訂閱。使用 app.config 檔案中的 SyncWhenConnectedInterval 索引鍵設定背景同步處理的同步處理時間間隔。

    ms160955.note(zh-tw,SQL.90).gif附註:
    [連接後隨即同步處理] 功能無法在 Microsoft 平台上使用。如需詳細資訊,請參閱<Sales Orders Sample Implementation Details>。

若要使用銷售訂單範例的進階同步處理選項

  1. [同步處理] 功能表的 [進階] 中,選擇下列其中一個選項:

    • (選擇性) 選取重新初始化選項來重新初始化訂閱。
    • (選擇性) 選取 [Web 同步處理選項 ] 並提供網際網路 URL 和用於透過安全 HTTPS 連接存取 Web 伺服器的「Windows 驗證」認證。若要使用此選項,您必須已設定 Web 同步處理的 IIS 伺服器。
      ms160955.note(zh-tw,SQL.90).gif附註:
      Web 同步處理不支援僅限上載或僅限下載的同步處理。啟用 Web 同步處理時,會停用 [僅限上載資料] 功能表項目。
    • (選擇性) 選取 [取得訂閱狀態] 以檢視最新「合併代理程式」工作階段的結果。

移除範例

使用下列程序移除「銷售訂單」範例。

若要僅刪除訂閱

  1. 在「訂閱者」端,執行下列 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
    
  2. 在「發行者」端,執行下列 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
    

若要移除銷售訂單範例

  1. 在發行者端,導覽到「銷售訂單」範例指令碼的安裝位置。預設為 C:\Program Files\Microsoft SQL Server\90\Samples\Replication\Merge\SalesOrders\Scripts。

  2. 執行批次檔 RemoveSalesOrdersSample.bat。

  3. 當系統提示時,輸入 "Y" 並按 Enter 鍵,移除「發行者」端的所有複寫物件,移除訂閱資料庫中的所有複寫物件,並解除安裝「發行者」端的發行和散發。

    ms160955.note(zh-tw,SQL.90).gif重要事項:
    當使用此指令碼時,將會移除所有複寫基礎結構。如果您已建立使用此「發行者」或「散發者」的其他發行集,則不要執行 DropAdvWorksSalesOrdersPublication.sql,而應手動移除 AdvWorksSalesOrders 發行集。如需詳細資訊,請參閱《SQL Server 線上叢書》中的<如何:刪除發行集 (SQL Server Management Studio)>或<How to: Delete a Publication (Replication Transact-SQL Programming)>。
  4. 在「訂閱者」端的 AdventureWorksLocal 資料庫上,執行 sp_removedbreplication (Transact-SQL)

  5. 將資料庫內容變更為 master 資料庫並執行 DROP DATABASE AdventureWorksLocal

註解

範例只供教育目的之用。它們不能用於實際執行環境,而且從來沒有在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。若沒有系統管理員的權限,就不應該在實際 SQL Server 資料庫或報表伺服器上,連接或使用範例應用程式和組件。

請參閱

概念

複寫範例

其他資源

Planning for Replication Programming
複寫開發人員資訊中心

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

變更的內容:
  • 更新 SQL Server 2005 SP1 的需求。
  • 新增有關如何在 SQL Server 2005 發行者上執行範例的注意事項。

2005 年 12 月 5 日

變更的內容:
  • 已更新部署步驟。
  • 已更新金鑰建立和部署資訊,以反映範例更新。