定義通知結構描述
訂閱規則會將通知插入通知檢視中。這是通知資料表上的一個檢視,而且沿用通知類別的名稱。該檢視和基礎資料表的結構描述,是衍生自通知類別結構描述。您可以在通知類別中,定義構成這個結構描述的欄位。
本主題將描述 Notification Services 加入結構描述中的預設欄位,以及如何建立通知資料的自訂欄位 (包括自訂計算欄位)。
預設的通知欄位
在建立儲存通知類別之通知的資料表時,Notification Services 會在資料表中,針對每一個宣告的通知欄位,各建立一個資料行,並且另外加入五個資料行,用於通知格式化和傳遞:
附註: |
---|
請勿在通知類別結構描述中,定義下列欄位。如果這麼做,就會因為欄位定義重複,而無法建立應用程式。 |
- [通知識別碼] 是一個 bigint 資料行。Notification Services 會針對每一個通知,為這個欄位提供一值。該值在通知類別中是唯一的。
- [通知批次識別碼] 是一個 bigint 資料行。每個產生通知的規則引發,都會產生一或多個批次的通知。Notification Services 會自動將批次號碼插入通知資料表中。
- [訂閱者識別碼] 是一個 nvarchar(255) 資料行,其中包含所產生之通知的訂閱者識別碼。Notification Services 會使用這個訂閱者識別碼,來查閱通知的傳遞資訊。產生通知的訂閱規則,必須插入此值。
- [裝置名稱] 是一個 nvarchar(255) 資料行,其中包含訂閱者裝置的名稱,該名稱儲存在執行個體資料庫的 [訂閱者裝置] 資料表中。Notification Services 會使用這個裝置名稱來取得傳遞資訊,而 Notification Services 則可提供裝置名稱給內容格式器,進行自訂格式化作業。產生通知的訂閱規則,必須插入此值。請注意,[訂閱者識別碼] 和 [裝置名稱] 配對都必須與 [訂閱者裝置] 資料表中的記錄相符。
- [訂閱者地區設定] 是一個包含地區設定碼的 nvarchar(10) 資料行。這個地區設定碼必須是其中一個支援的地區設定碼,而且必須由訂閱規則插入。Notification Services 會將這項資訊傳遞到內容格式器,讓它進行地區設定特有的格式化作業。如需支援的程式碼清單,請參閱<Subscriber Locale Codes>。
通知資料表中後續的資料行,是由您在通知類別中的通知欄位所定義。Notification Services 會在自訂欄位後面,另外加入三個欄位,來追蹤通知傳遞:
- [傳遞狀態碼] 是一個 tinyint 資料行,包含傳遞狀態的程式碼。這項資訊不是專門用於報告。
- [傳送時間] 是一個 datetime 資料行,包含傳遞通訊協定報告通知傳遞狀態的時間。
- [連結通知識別碼] 是一個 bigint 資料行,只有在使用摘要傳遞時才相關。如果通知包含在摘要中,而且不是摘要中的第一個通知,這個欄位便含有第一個通知的識別碼。第一個通知包含狀態和時間資訊。
這些欄位不是專門用來偵錯和報告。請改用 NS<NotificationClassName>NotificationDistribution 檢視,該檢視會以更方便閱讀的格式提供這項資訊。
自訂通知欄位
自訂欄位可以儲存訂閱者有興趣、或是用來產生最終通知的資料。
若要定義通知類別的自訂欄位,必須知道您要傳送哪些資料,而且必須與產生通知之訂閱規則所產生的資料相符。
您必須為每一個自訂欄位,定義欄位名稱和資料類型。如果您要傳送含有氣象預報的通知,可以定義下列通知欄位:
- 欄位名稱:[縣/市];欄位類型:nvarchar(35)
- 欄位名稱:[州];欄位類型:nvarchar(35)
- 欄位名稱:[預報];欄位類型:nvarchar(3500)
這些欄位的資料類型,必須與產生通知所用的來源資料類型相容。
如果您是使用摘要傳遞,而且您希望將把某個訂閱者所有同一州的通知全部組合起來,可以將該欄位的摘要編組設為 true。[州] 欄位的新定義如下所示:
- 欄位名稱:[州];欄位類型:nvarchar(35);摘要編組:true
如需有關摘要傳遞的詳細資訊,請參閱<指定多重傳遞的摘要>。
若要定義通知類別的欄位
- 如果您是利用 XML 來定義應用程式,請在<Fields Element for Schema (ADF)>定義個別欄位。
- 如果您是利用 Notification Services Management Objects (NMO) 來定義應用程式,請以 NotificationField 物件建立個別欄位,並且以 NotificationFieldCollection 屬性,將它們加入至 NotificationFields 中。
計算欄位
計算欄位可讓您在計算通知資料之後,立即將內容傳遞到內容格式器。
計算欄位以 Transact-SQL 運算式產生通知欄位的值之後,立即將通知傳遞到內容格式器。任何 Transact-SQL 運算式只要能夠評估為應用程式資料庫中 SELECT 查詢的一部份,您都可以使用。其中包括使用任意常數以及發出函數呼叫。
附註: |
---|
在 Transact-SQL 語法中,字串常數必須括住。因此,如果您要在計算欄位中使用字串,必須用英文單引號括住。如果字串是 Unicode,也必須在字串前面加上 N,例如 N'myString'。 |
如果您要把計算欄位加入通知類別中,可以定義一個欄位名稱和 Transact-SQL 運算式。例如,如果您要將價格轉換為格式字串,可以在計算欄位定義中指定下列各項:
- 欄位名稱:[格式化股價];
- Transact-SQL 運算式:CONVERT(NVARCHAR(10), StockPrice, 1)
當通知傳送到內容格式器時,這個計算欄位會採用 [股價] 欄位的值,將它轉換為格式字串。例如,如果 [股價] 欄位是一個 money 值 1000.70,[格式化股價] 就是下面這個字串:1,000.70。
您也可以指定利用計算欄位決定要將哪些通知組合用於摘要傳遞。若要組合相同計算欄位值的通知,請將計算欄位的摘要編組屬性設為 true。
若要定義通知類別的計算欄位
- 如果您是以 XML 定義應用程式,請在 ComputedFields Element (ADF) 中,定義每一個欄位。
- 如果您是以程式設計的方式定義應用程式,請在 NotificationComputedField 物件中建立個別欄位,然後利用 NotificationComputedFields 屬性,將它們加入 NotificationClass 物件的 NotificationComputedFieldCollection 中。
請參閱
概念
設定內容格式器
指定多重傳遞的摘要
指定通知批次大小
指定通知過期保留天數
指定多重傳遞的摘要
其他資源
定義通知類別
設定傳遞通訊協定
運算式 (Transact-SQL)
CREATE TABLE (Transact-SQL)
定義通知類別
定義 Notification Services 應用程式