共用方式為


股票範例

更新: 2006 年 7 月 17 日

「股票」範例是 Microsoft SQL Server 2005 Notification Services 應用程式,會搭配使用事件驅動訂閱和已排程訂閱,依據股票市場資料產生通知。當股價上漲超過指定的觸發程序值時,訂閱使用者即會收到通知。

此範例還示範如何在自訂應用程式中裝載 Notification Services 引擎,而不使用由 Notification Services 建立的 Microsoft Windows 服務。

狀況

投資者會訂閱有關股價的通知。每個訂閱都會指定股票代號,並指定是事件驅動的訂閱還是已排程的訂閱。

對於事件驅動的訂閱,如果符合下列所有條件,當發生股票事件時 Notification Services 會產生通知:

  • 事件中的股票代號符合訂閱中的股票代號。
  • 新的股價高於訂閱的觸發程序值。
  • 股票事件紀事輯中股票的上一高價低於訂閱的觸發程序值。如此可以確定訂閱者不會取得同一股票的多個通知。

如果新的股價高於紀事輯中的價格,或紀事輯中不存在股票代號,Notification Services 會更新此紀事輯。

一次只傳送一個事件驅動訂閱的通知。

對於已排程訂閱,Notification Services 會針對已排程訂閱比對股價紀事輯中的資料。當訂閱中的股票代號符合紀事輯中的股票代號,即發生相符情況。

Notification Services 會為每個相符情況產生一個通知。散發者會將單一訂閱者的多個通知結合成一個通知,該通知提供有關訂閱者之股票投資組合的資料。

語言

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

功能

應用程式區 功能

事件類別

一個事件類別和一個事件紀事輯。

訂閱類別

兩個訂閱類別,一個用於事件驅動訂閱,另一個用於已排程訂閱。

通知類別

兩個通知類別,一個用於事件驅動通知,另一個用於已排程通知。已排程通知使用摘要傳遞。

事件提供者

一個檔案系統監看員事件提供者和一個自訂、非裝載的事件提供者。

內容格式器

Notification Services XSLT 內容格式器。每個通知類別會為內容格式器指定其自己的 XSLT 檔案。

傳遞通訊協定

File 和 SMTP 傳遞通訊協定。

Notification Services 引擎

裝載於主控台應用程式中。

必要條件

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

  • 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>。

建立方案

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

若要產生強式名稱金鑰檔

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

    -- 或 --

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

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

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

    sn -k SampleKey.snk

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

建立方案,以便您可以在建立該方案之後立即啟動執行個體。

建立 Visual Studio 方案

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

    1. [開始] 功能表上,指向 [所有程式]\[Microsoft .NET Framework SDK v2.0],然後按一下 [SDK 命令提示字元]
    2. 導覽到「股票」範例的根資料夾。若為預設位置,請輸入下列命令:
      cd C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock
    3. 輸入下列項目以建立方案:
      [C#]
      msbuild Stock.sln
      [Visual Basic]
      msbuild Stock_VB.sln
  • 或者,如果使用的是 Visual Studio 2005,請執行下列工作:

    1. 開啟選擇的方案檔 (Stock.sln 或 Stock_VB.sln)。
    2. 建立方案。

部署 Notification Services 的執行個體

若要部署 Notification Services 的執行個體,您需要執行下列動作:

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

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

步驟 1:建立 Notification Services 的執行個體

  1. 開啟 SQL Server Management Studio,並連接到 SQL Server 的執行個體。

  2. 在 [物件總管] 中,以滑鼠右鍵按一下 [Notification Services] 資料夾,然後選取 [新的 Notification Services 執行個體]

  3. [新的 Notification Services 執行個體] 對話方塊中,按一下 [瀏覽],並選取「股票」範例之根資料夾中的 InstanceConfig.xml 檔案。

  4. [參數] 方塊中,輸入三個參數的值:

    • SampleDirectory 是「股票」範例之根資料夾的路徑。預設路徑為 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock。
    • NotificationServicesHost 是本機伺服器的名稱。
    • SQLServer 是 SQL Server 執行個體的名稱。
  5. 選取 [建立執行個體之後啟用它] 核取方塊。

  6. 按一下 [確定]

  7. 當 Notification Services 完成建立執行個體時,請按一下 [關閉]

步驟 2:註冊 Notification Services 的執行個體

  1. 在 SQL Server Management Studio 中,開啟 Notification Services 節點,以滑鼠右鍵按一下 [StockInstance],指向 [工作],然後選取 [註冊]

    不選取任何選項。自訂應用程式將裝載引擎,因此不要建立 Windows 服務。

  2. 按一下 [確定]

  3. 當 Notification Services 完成註冊執行個體時,請按一下 [關閉]

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

步驟 3:授與 SQL Server、Windows 和資料夾權限

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

  2. 如果需要建立新的資料庫登入帳戶,請以滑鼠右鍵按一下 [登入],選取 [新增登入],然後建立登入帳戶:

    • 若要使用 Windows 驗證,請選取 [Windows 驗證],輸入註冊執行個體時指定的 Windows 帳戶。
    • 如果必須使用「SQL Server 驗證」,請選取 [SQL Server 驗證],然後輸入註冊執行個體時指定的 SQL Server 登入和密碼。
  3. 如果用來執行此範例的登入已具有對 SQL Server 的存取權,請以滑鼠右鍵按一下登入,然後選取 [屬性]

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

  5. 授與 StockInstanceNSMain 資料庫的權限:

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

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

  8. 設定 [事件] 資料夾的安全性:

    1. 在 [Windows 檔案總管] 中,導覽到「股票」範例的 [事件] 資料夾。
    2. 以滑鼠右鍵按一下 [事件] 資料夾,選取 [共用和安全性],然後選取 [安全性] 索引標籤。
    3. 按一下 [加入],並加入用來執行此範例的帳戶。
    4. [群組或使用者名稱] 方塊中,選取剛加入的帳戶。
    5. [的權限] 方塊中,選取 [讀取][修改] 權限。
    6. 按一下 [確定] 以套用這些變更。
  9. 設定 [通知] 資料夾的安全性:

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

執行範例

若要執行範例,您需要執行下列動作:

  • 啟動執行個體。
  • 加入訂閱者和訂閱。
  • 提交事件。

執行這些工作之後,Notification Services 將產生通知。下列程序顯示如何執行這些工作,以及之後如何檢視產生的通知。

步驟 1:啟動裝載引擎

  1. 確認用於執行裝載引擎的帳戶是 SQLServer2005NotificationServicesUser$ComputerName Windows 群組的成員 (其具有讀取和執行 Notification Services 二進位編碼檔案的權限),或該帳戶具有讀取和執行 C:\Program Files\Microsoft SQL Server\90\Notification Services 資料夾中檔案的權限。

  2. 在 [Windows 檔案總管] 中,導覽到「股票」範例的 HostableExecutionEngine\language\HostableExecutionEngine\bin\Debug 資料夾。

  3. 按兩下 HostableExecutionEngine.exe 以執行裝載 Notification Services 引擎的主控台應用程式。

    重要事項 不要按 ENTER 鍵。對於 Notification Services 應用程式來說,必須執行引擎才能產生通知。

步驟 2:加入訂閱者、訂閱和事件

  1. 執行 AddSubscribers.exe。

    此 EXE 檔案位於「股票」範例的 AddSubscribers\language\AddSubscribers\bin\Debug 子資料夾中。

    加入訂閱者之後,按 ENTER 鍵以關閉主控台應用程式。

  2. 執行 AddSubscriptions.exe。

    此 EXE 檔案位於「股票」範例的 AddSubscriptions\language\AddSubscriptions\bin\Debug 子資料夾中。

    加入訂閱之後,按 ENTER 鍵以關閉主控台應用程式。

  3. 執行 NonHostedEventProvider.exe。

    此 EXE 檔案位於「股票」範例的 NonHostedEventProvider\language\NonHostedEventProvider\bin\Debug 子資料夾中。

    這個步驟會將事件加入至使用非主控事件提供者的應用程式,該提供者會在應用程式外部執行。下一個步驟說明如何將事件提交至主控檔案系統監看員事件提供者。

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

步驟 3:藉由置放事件檔案提交事件

  1. 在 [Windows 檔案總管] 中,導覽到「股票」範例的根資料夾,然後將 EventData.xml 檔案複製至 [事件] 子資料夾。

    ms160739.note(zh-tw,SQL.90).gif附註:
    由於您之前已使用非主控事件提供者提交事件,因此這個步驟是選擇性的。如果您不想要提交其他事件以及產生其他通知,請進行下一個步驟檢視通知。

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

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

步驟 4:檢視通知

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

  2. 使用 [Windows 檔案總管],導覽到「股票」範例的 [通知] 資料夾。您應該找到名為 FileNotifications.txt 的檔案。此檔案包含由此應用程式傳送的所有通知。

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

ms160739.note(zh-tw,SQL.90).gif附註:
若要產生另一個通知而不重建或變更範例,請執行下列查詢: USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

停止引擎

當您完成提交事件和檢視產生的通知時,請停止 Notification Services 引擎。

若要停止引擎

  • 在 HostableExecutionEngine 主控台視窗中,按 ENTER 鍵以停止引擎。

移除範例

使用下列程序移除「股票」範例。

若要移除「股票」範例

  1. 在 [物件總管] 中,展開 [Notification Services]。

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

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

請參閱

其他資源

主控 Notification Services 引擎
SQL Server Notification Services 範例
保全 Notification Services

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

新增內容:
  • 在「執行範例」的步驟 3 和 4 中,新增了關於使用非主控事件提供者,以及檔案系統監看員事件提供者提交事件的選項資訊。
  • 新增了有關使用 NSSubscriberAdmin 資料庫角色的注意事項。

2006 年 4 月 14 日

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

2005 年 12 月 5 日

變更的內容:
  • 已變更產生金鑰檔的指示,包括金鑰檔的名稱和位置。
  • 已更新權限章節來釐清哪一個帳戶需要權限。