共用方式為


定義訂閱結構描述

Notification Services 是利用聯結事件和訂閱資料的 Transact-SQL 查詢,來產生通知。在使用大部份的應用程式時,您必須指定在產生通知時所用的訂閱欄位。您是在訂閱類別的結構描述中,指定這些欄位。

本主題將描述 Notification Services 所加入的預設欄位 (您可以加入結構描述中的標準欄位),以及如何建立自訂欄位。

預設的訂閱欄位

所有的訂閱都需要一般資訊。Notification Services 必須可以唯一識別每個訂閱,識別每個訂閱的訂閱者,以及判斷是否有啟用訂閱。如果訂閱類別支援排定的訂閱,則訂閱必須與訂閱排程相關聯。

若要簡化應用程式開發,Notification Services 會針對這項共用資訊自動加入下列訂閱類別欄位:

ms171409.note(zh-tw,SQL.90).gif附註:
請勿在訂閱類別結構描述中,定義下列欄位。如果這麼做,就會因為欄位定義重複,而無法建立應用程式。
  • Notification Services 包含 [SubscriptionId][SubscriberId][Enabled] 欄位。當 Notification Services 建立應用程式時,它會將下列資料行加入訂閱資料表定義中:
    • [SubscriptionId] 是一個 bigint 識別資料行。Notification Services 會針對每個新訂閱的這個資料行提供一個值。
    • [SubscriberId]nvarchar(255) 資料行。當您加入訂閱時,您的訂閱管理介面必須提供訂閱者識別碼值。
    • [已啟用] 是一個 [布林] 欄位,您可以用程式設計的方式,為每一項訂閱加以設定。如果將 [已啟用] 值設為 false,就會暫停產生訂閱的通知。預設值是 true
  • 如果訂閱類別有排定的規則,Notification Services 便含有一個 [ScheduleId] 欄位。在訂閱資料表中,它是訂閱排程資料表的外部索引鍵。排程值是在使用者建立一個排定的訂閱時,在訂閱管理介面中定義的。[ScheduleId] 是一個接受 NULL 值的 int 資料行,以防萬一訂閱類別同時支援事件驅動訂閱和排定訂閱兩者。

標準欄位:DeviceName 和 SubscriberLocale

根據應用程式而定,您可能會希望在訂閱類別結構描述中定義兩個欄位:[DeviceName][SubscriberLocale]。這些欄位常常是在每個訂閱類別中定義,讓訂閱者選取裝置和地區設定,不過它們並不是非定義不可。如果有定義這些欄位,散發者就可以將這些資訊用於通知格式化和傳遞。

DeviceName 欄位

訂閱者裝置是傳遞通知的地方。裝置可以是電子郵件、Windows Messenger、手機或其他您應用程式支援的任何裝置。

當您產生通知時,通知資料必須包含通知傳遞的裝置名稱。如果您讓訂閱者在建立訂閱時指定裝置,請在訂閱類別結構描述中,加入 [DeviceName] 欄位。

請在 [DeviceName] 欄位使用下列屬性:

  • 欄位名稱:DeviceName
  • 欄位類型:nvarchar(255)
  • 欄位修飾詞:NOT NULL

如需有關裝置的資訊 (例如,訂閱者的地址),請參閱執行個體資料庫中的訂閱者資料。請利用 NSSubscriberDeviceView 檢視,來檢閱 Notification Services 執行個體的訂閱者和訂閱者裝置資訊。如需詳細資訊,請參閱<NSSubscriberDeviceView>。

如果您把 [DeviceName] 欄位排除在結構描述之外,那麼也必須執行下列一個動作:

  • 如果您的應用程式只支援一個裝置,請在產生通知所用的 Transact-SQL 規則中,提供一個靜態裝置名稱。
  • 如果您的應用程式支援多個裝置,請動態選取一個裝置。例如,訂閱者可能具有多個裝置,而且您的應用程式可以根據當日時間選取裝置。您可以在上班時間,將所有的通知傳給訂閱者的商務電子郵件帳戶。到了下班時間,則將重要通知傳到訂閱者的電話,而將其他所有的通知傳到訂閱者的家用電子郵件帳戶。

SubscriberLocale 欄位

地區設定是通知所用的一種語言和國家/地區。Notification Services 支援許多地區設定。如需地區設定的清單,請參閱<Subscriber Locale Codes>。

當您產生通知時,通知資料必須包含地區設定。如果您讓訂閱者指定地區設定,請在訂閱類別結構描述中加入 [SubscriberLocale] 欄位。

請在 [SubscriberLocale] 欄位使用下列屬性:

  • 欄位名稱:SubscriberLocale
  • 欄位類型:nvarchar(10)
  • 欄位修飾詞:NOT NULL

如果您把 SubscriberLocale 欄位排除在外,則必須執行下列一個動作:

  • 如果您的應用程式只支援一個地區設定,請在產生通知所用的 Transact-SQL 規則中,提供一個靜態地區設定。
  • 如果您的應用程式支援多個地區設定,請從另一個來源選取訂閱者地區設定,例如,另一個資料庫中的使用者設定檔資料表。

自訂訂閱欄位

大部份的應用程式也都有自訂訂閱欄位。這些欄位會定義訂閱者可以在他們的訂閱中自訂,並且在訂閱資料表中建立資料行的值。

若要建立自訂欄位,必須知道訂閱者可以提供哪些資訊來自訂他們的訂閱。例如,氣象應用程式可讓使用者只選取一個城市,因此您只要定義一個 [城市] 自訂欄位即可。飛行應用程式可讓使用者選取一個飛行起點、終點、價格和運輸公司,因此您要建立 [LeavingFrom][GoingTo][Price][Carrier] 等欄位。

當您定義自訂欄位時,也必須定義欄位的 SQL Server 資料類型,以及任何欄位修飾詞,例如,欄位是否接受 NULL 值。由於這些欄位定義資料表資料行,因此您必須遵守定義資料表資料行的方針。如需詳細資訊,請參閱<CREATE TABLE (Transact-SQL)>。

ms171409.note(zh-tw,SQL.90).gif附註:
如需支援類型的清單,請參閱<FieldType Element for SubscriptionClass/Schema/Field (ADF)>。

定義結構描述

總而言之,您在定義訂閱類別的結構描述時,會定義自訂欄位和標準 [DeviceName][SubscriberLocale] 欄位 (如果有使用的話)。您不會定義預設欄位,例如 [SubscriberId]

若要定義訂閱類別的結構描述

如果您是利用 XML 來定義應用程式,請在應用程式定義檔案 (ADF) 中定義訂閱類別的結構描述。如果您是以程式設計的方式定義應用程式,請利用 Notification Services Management Objects (NMO) 來定義訂閱類別的結構描述。

範例

如需結構描述的範例,請參閱<訂閱結構描述範例>。

請參閱

概念

定義核心訂閱類別
定義訂閱規則
定義訂閱類別的索引
定義訂閱類別的紀事輯
收集訂閱相關的資訊

其他資源

定義訂閱類別
資料類型 (Database Engine)
CREATE TABLE (Transact-SQL)
FieldType Element for SubscriptionClass/Schema/Field (ADF)
開發訂閱管理介面

說明及資訊

取得 SQL Server 2005 協助