共用方式為


FlightNmo 範例

更新: 2006 年 7 月 17 日

FlightNmo 範例示範如何使用 Notification Services Management Objects (NMO) 建立「航程」範例應用程式。

狀況

旅客會訂閱航班價格通知。在每個訂閱中,他們會指出出發城市和到達城市、目標價格和 (選擇性) 航空公司。

執行 FlightNmo 應用程式的公司可以透過將 XML 資料置放於監看資料夾,將航班價格事件資料提交給應用程式。之後,Notification Services 會收取此資料,並使用相符的訂閱為訂閱者產生通知。

符合下列條件時就會產生通知:

  • 事件機票價格低於訂閱機票價格。
  • 事件起飛機場等於訂閱起飛機場。
  • 事件抵達機場等於訂閱抵達機場。
  • 事件航空公司等於訂閱航空公司 (如果指定的話)。

如果需要同時向一位訂閱者傳送多個通知,Notification Services 會使用摘要傳遞來結合多個通知。之後,Notification Services 會使用 XSLT 內容格式器格式化通知,並使用指定的傳遞通道 (電子郵件或檔案) 散發通知。

語言

XML、XSD、XSLT 和 Microsoft Visual C# 或 Microsoft Visual Basic。

功能

FlightNmo 範例使用 Notification Services 的下列功能:

應用程式區 功能

事件類別

基本事件佇列 (無紀事輯)。

訂閱類別

事件驅動訂閱。

通知類別

摘要傳遞。

事件提供者

檔案系統監看員事件提供者。

內容格式器

XSLT 內容格式器。

傳遞通訊協定

File 和 SMTP 傳遞通訊協定。

執行個體和應用程式開發

NMO

必要條件

執行此範例之前,請確定已安裝下列軟體:

  • SQL Server 2005,包括下列元件:
    • Database Engine。
    • Notification Services 引擎和用戶端元件。
    • SQL Server Management Studio。
    • Notification Services 範例。SQL Server 2005 中隨附這些範例。您可以從 SQL Server 開發人員網站下載最新版的範例。
    • .NET Framework SDK 2.0 或 Microsoft Visual Studio 2005。您可以免費取得 .NET Framework SDK。請參閱<安裝 .NET Framework SDK>。

請確定已安裝下列 Windows 元件且這些元件都可運作:

  • Simple Mail Transfer Protocol (SMTP) 服務,其為 Internet Information Services (IIS) 的元件。在 Microsoft Windows Server 2003 上,依預設 SMTP 並未隨 IIS 一同安裝。如需有關如何安裝和使用「SMTP 服務」的指示,請參閱 Windows 文件集。

還要確定已啟動將要使用之 Database Engine 的執行個體。

產生強式名稱金鑰檔

如果您尚未建立強式名稱金鑰檔,請利用下列指示產生金鑰檔。

若要產生強式名稱金鑰檔

  1. 開啟 Microsoft Visual Studio 2005 命令提示字元。按一下 [開始],依序指向 [程式集] 和 [Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]。

    -- 或 --

    開啟 Microsoft .NET Framework 命令提示字元。按一下 [開始],依序指向 [所有程式] 和 [Microsoft .NET Framework SDK 2.0],然後按一下 [SDK 命令提示字元]。

  2. 使用變更目錄命令 (CD),將命令提示字元視窗的現行目錄切換到範例的安裝資料夾。

    ms160822.note(zh-tw,SQL.90).gif附註:
    若要判斷範例所在的資料夾,按一下 [開始] 按鈕,依序指向 [所有程式]、[Microsoft SQL Server] 和 [文件集和教學課程],然後按一下 [範例目錄]。如果是使用預設安裝位置,則範例位於 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples。
  3. 在命令提示字元中,執行下列其中一個命令來產生金鑰檔:

    sn -k SampleKey.snk

    ms160822.note(zh-tw,SQL.90).gif重要事項:
    如需有關強式名稱金鑰組的詳細資訊,請參閱 MSDN 中 .NET Development Center 中的<Security Briefs: Strong Names and Security in the .NET Framework>。

建立 Notification Services 執行個體

若要建立執行個體,必須執行下列工作:

  • 建立並註冊 Notification Services 的執行個體。
  • 授與 SQL Server、資料庫和資料夾權限。

下列程序示範如何執行 FlightNmo 範例的這些工作。

步驟 1:建立 Visual Studio 方案

  1. 首先,建立 Visual Studio 方案。

    如果您使用的是 Microsoft .NET Framework SDK,請執行下列工作:

    1. 按一下 [開始],指向 [所有程式]\[Microsoft .NET Framework SDK v2.0],然後再按 [SDK 命令提示字元]
    2. 找到 FlightNmo 範例的根資料夾。若為預設位置,請輸入下列命令:
      cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo
    3. 輸入下列項目以建立方案:
      [C#]
      msbuild FlightNmo.sln
      [Visual Basic]
      msbuild FlightNmo_VB.sln

    或者,如果使用的是 Visual Studio 2005,請執行下列工作:

    1. 開啟選擇的方案檔 (FlightNmo.sln 或 FlightNmo_VB.sln)。
    2. 請從 Visual Studio [建立] 功能表上,選取 [建置方案]

步驟 2:建立並註冊 Notification Services 執行個體

  1. 在命令提示字元中,尋找 CreateFlightNmoInstance Debug 資料夾。

    cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug

  2. 如下所示,執行 [CreateFlightNmoInstance.exe] 來建立、註冊和啟用執行個體。只有在使用「SQL Server 驗證」時,才需要 SqlUserNameSqlPassword 引數。所有其他引數都是必要的:

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    當執行此命令時,請為此主題先前所提及之預留位置使用下列值:

    • databaseServer 為 Database Engine 執行個體,可以在其上建立執行個體和應用程式資料庫。
    • directory 是範例目錄。預設位置為 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo。
    • NotificationServicesHost 是執行 Notification Services 引擎元件的伺服器。在此範例中,您應該使用本機電腦。
    • NSServiceUserName 是 NS$FlightNmoInstance Windows 服務所使用的帳戶。
    • NSServicePwdNSServiceUserName 帳戶的密碼。
    • 只有在使用「SQL Server 驗證」時,才需要使用「SQL Server 驗證」引數 (NSServiceSqlUserNameNSServiceSqlPwd)。如果提供了這些引數,Windows 服務將使用它們來連接到 Database Engine。

    完成此命令後,您將具有兩個新資料庫和一個 Windows 服務。這兩個資料庫名為 FlightNmoInstanceNSMainFlightNmoInstanceFlightNmo。Windows 服務名為 NS$FlightNmoInstance。

ms160822.note(zh-tw,SQL.90).gif附註:
如果使用資料庫擁有者或系統管理員帳戶部署 Notification Services 範例,則不需要將 SQL Server 權限授與該帳戶。授與這些權限可能會導致錯誤,但您可以忽略這些錯誤。部署自己的應用程式時,應該使用較低權限的帳戶來協助增進安全性。

步驟 3:授與 SQL Server 和資料庫權限

  1. 開啟 SQL Server Management Studio,連接到您在此主題先前所提及的 SqlServer 引數中指定之 Database Engine 的執行個體。

  2. 在 [物件總管] 中,展開 [安全性] 節點。

  3. 如果您必須為 Windows 服務建立新的資料庫登入帳戶,請以滑鼠右鍵按一下 [登入],選取 [新增登入],然後建立登入帳戶:

    • 若要使用「Windows 驗證」,請選取 [Windows 驗證],輸入您在此主題先前所提及之 ServiceUserName 引數中指定的那個 Windows 帳戶。
    • 若要使用「SQL Server 驗證」,請選取 [SQL Server 驗證],然後輸入您為在此主題先前所提及之 SqlUserNameSqlPassword 引數指定的值。
  4. 如果 Windows 服務所使用的登入已經具有對 SQL Server 的存取權限,請以滑鼠右鍵按一下登入,並選取 [屬性]

  5. [登入] 對話方塊的左窗格中,選取 [使用者對應]

  6. 授與 FlightNmoInstanceNSMain 資料庫的權限:

    1. [已對應到此登入的使用者] 方塊中,選取 [FlightNmoInstanceNSMain]
    2. [FlightNmoInstanceNSMain 的資料庫角色成員資格] 方塊中,選取 [NSRunService]
  7. 授與 FlightNmoInstanceFlightNmo 資料庫的權限:

    1. [已對應到此登入的使用者] 方塊中,選取 [FlightNmoInstanceFlightNmo]
    2. [FlightNmoInstanceFlightNmo 的資料庫角色成員資格] 方塊中,選取 [NSRunService]
  8. 按一下 [確定] 以套用 SQL Server 權限。

  9. 使用 [Windows 檔案總管] 設定 [事件] 資料夾的安全性:

    1. 尋找範例的 [事件] 資料夾。
    2. 以滑鼠右鍵按一下 [事件] 資料夾,選取 [共用和安全性],然後選取 [安全性] 索引標籤。
    3. 按一下 [加入],並加入 Windows 服務使用的帳戶。
    4. [群組或使用者名稱] 方塊中,選取剛加入的帳戶。
    5. [的權限] 方塊中,選取 [讀取][修改] 權限。
    6. 按一下 [確定] 以套用這些變更。
  10. 設定 [通知] 資料夾的安全性:

    1. 尋找範例的 [通知] 資料夾。
    2. 以滑鼠右鍵按一下 [通知] 資料夾,選取 [共用與安全性],然後選取 [安全性] 索引標籤。
    3. 按一下 [加入],並加入 Windows 服務使用的帳戶。
    4. [群組或使用者名稱] 方塊中,選取剛加入的帳戶。
    5. [權限] 方塊中,選取 [寫入]
    6. 按一下 [確定] 以套用這些變更。

執行範例

若要執行範例,您必須

  • 啟動執行個體。
  • 加入訂閱者和訂閱。
  • 置放包含事件的 XML 檔案。
  • 檢視產生的通知。

下列程序示範如何執行這些工作。

步驟 1:啟動執行個體

  1. 在 [物件總管] 中,開啟 [Notification Services] 資料夾。

  2. 以滑鼠右鍵按一下 [FlightNmoInstance],然後選取 [啟動]

步驟 2:加入訂閱者和訂閱

  1. 執行 AddSubscribers.exe。

    此資料夾的預設位置為 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\language\AddSubscribers\bin\Debug。

  2. 執行 AddSubscriptions.exe。

    此資料夾的預設位置為 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\language\AddSubscriptions\bin\Debug。

ms160822.note(zh-tw,SQL.90).gif附註:
如果是使用實際執行的應用程式,或者您是使用受限制的帳戶執行這個應用程式,請在執行個體及應用程式資料庫中,將應用程式的 SQL Server 登入加入到 NSSubscriberAdmin 資料庫角色。

步驟 3:提交事件

  1. 在 [Windows 檔案總管] 中,尋找 FlightNmo 範例的根資料夾,然後將 EventData.xml 檔案複製到 [事件] 子資料夾。

    置放檔案時,檔案系統監看員事件提供者將從檔案讀取資料,並將其提交給應用程式,然後將副檔名變更為 .done。

    如果讀取或提交資料時發生錯誤,事件提供者會將副檔名變更為 .err。如需有關錯誤的其他詳細資料,請查詢「Windows 事件檢視器」。

步驟 4:檢視通知

  1. Notification Services 大約需要一分鐘產生通知。

  2. 使用 [Windows 檔案總管],尋找 FlightNmo 範例的 [通知] 資料夾。您應該找到名為 FileNotifications.txt 的檔案。此檔案包含以檔案為基礎的通知。

  3. 導覽到要卸除電子郵件訊息的資料夾。它通常是 C:\Inetpub\mailroot 中的資料夾之一。通知應位於 [收取] 資料夾或 [佇列] 資料夾,視 SMTP 伺服器狀態而定。如果 SMTP 服務正在執行,訊息可能會移至 [垃圾郵件] 資料夾。

移除範例

請遵循這些步驟移除 FlightNmo 範例。

若要移除 FlightNmo 範例

  1. 在 SQL Server Management Studio 的 [物件總管] 中,開啟 [Notification Services] 資料夾。

  2. 以滑鼠右鍵按一下 [FlightNmoInstance],然後選取 [停止]

  3. 以滑鼠右鍵按一下 [FlightNmoInstance],指向 [工作],然後選取 [取消註冊]

  4. 以滑鼠右鍵按一下 [FlightNmoInstance],指向 [工作],然後選取 [刪除]

請參閱

其他資源

SQL Server Notification Services 範例
保全 Notification Services

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

新增內容:
  • 新增有關使用資料庫擁有者權限執行範例的注意事項。

2005 年 12 月 5 日

變更的內容:
  • 已變更產生金鑰檔的指示,包括金鑰檔的名稱和位置。