NS<NotificationClassName>NotificationDistribution ビュー
Microsoft SQL Server Notification Services の複数の内部テーブルからデータを結合し、通知の配信に関する情報を提供します。Notification Services では、名前付け規則 NSNotificationClassNameNotificationDistribution により、各通知クラスに 1 つのビューが作成されます。
たとえば、Notification Services に含まれる Stock サンプルには、2 つの通知クラス、StockNotifications と PortfolioNotifications があります。この場合、関連付けられたビューの名前は、NSStockNotificationsNotificationDistribution と NSPortfolioNotificationsNotificationDistribution になります。
NSNotificationClassNameNotificationDistribution ビューに含まれる列を次の表に示します。
列 | データ型 | 説明 |
---|---|---|
NotificationId |
bigint |
通知の ID 番号です。 |
DeliveryChannelName |
nvarchar (255) |
通知の配信に使用された配信チャネルの名前です。 |
DistributorName |
nvarchar(255) |
通知の配信に使用されたディストリビュータの名前です。 |
DeliveryRequestTime |
datetime |
配信する通知データをディストリビュータが配信プロトコルに渡した日時です。 |
SentTime |
datetime |
通知が実際に送信された時刻です。 |
DeliveryStatusDescription |
nvarchar(255) |
配信の状態 (未試行、成功、または失敗) です。詳細については、「解説」を参照してください。 |
DeliveryStatusInfo |
nvarchar(2048) |
通知状態のレポート時に配信プロトコルからディストリビュータに返された状態メッセージです。通常は、失敗の原因をレポートするために使用されます。NULL の場合は、状態メッセージが送信されなかったことを示します。 |
NotificationText |
nvarchar(2048) |
通知のテキストです。 |
SubscriberId |
nvarchar(255) |
通知のサブスクライバの ID です。 |
DeviceName |
nvarchar(255) |
サブスクリプションで指定された配信デバイスの名前です。 |
SubscriberLocale |
nvarchar(10) |
通知のサブスクライバのロケールです。 |
通知クラス フィールド (1-n) |
application-defined |
通知クラスで指定されたすべての列も、このビューに表示されます。 |
LinkNotificationId |
bigint |
ダイジェスト配信を使用する場合にダイジェストに含まれる最初の通知の ID です。ダイジェストに含まれる残りのすべての通知に、この ID が格納されます。NULL の場合は、その通知がダイジェストに含まれる通知ではないことを示します。 |
解説
NSNotificationClassNameNotificationDistribution ビューはアプリケーション データベースにあります。
このビューで使用できるデータ量は、アプリケーションごとに異なり、アプリケーション定義のディストリビュータ ログの設定によって制御されます。これらのアプリケーション実行設定によってディストリビューション ログに書き込む内容が制御され、それによりこのビューで使用できるデータが決まります。詳細については、「ディストリビュータ ログ記録の構成」を参照してください。
NSNotificationClassNameNotificationDistribution ビューでは 1 つの通知に複数の行を含めることができ、配信ごとに 1 行のデータが表示されます。たとえば、通知の配信が 2 回失敗した後で成功した場合、Vacuumer 処理が行われるまでは、通知には 3 行のデータが含まれます。
通知の配信状態は、DeliveryStatusDescription 列で確認します。次の表に、状態コードの説明を示します。
DeliveryStatusDescription の値 | 説明 |
---|---|
配信は一度も行われていません: 1 回目の配信は保留中です |
ディストリビュータで、まだ通知の配信が行われていません。原因としては、アプリケーションの設定、配信する通知のバックログ、ディストリビューションの問題 (ディストリビュータが無効になっているなど)、またはエラーが多すぎることなどが考えられます (FailuresBeforeAbort 設定で制御されます)。 |
正常に配信されました |
配信プロトコルから配信が成功したことを示す値が返されました。 |
配信に失敗しました |
以下のいずれかのイベントが発生しました。
|
失敗した配信のトラブルシューティングを行うには、Microsoft Windows イベント ビューアでアプリケーション ログのエラー メッセージを確認します。1 回だけ配信に失敗した場合でも、複数のエラーがログに記録されていることがあります。その場合は、Notification Services の各エラー メッセージの説明を確認してください。
権限
このビューは、sysadmin および db_owner サーバー ロールのメンバと、Notification Services の NSAnalysis ロールで使用できます。
例
Stock サンプルで次のクエリを実行し、配信に失敗した通知があるかどうかを確認します。
USE StockInstanceStock;
SELECT NotificationId, DeliveryStatusInfo
FROM NSStockNotificationsNotificationDistribution
WHERE DeliveryStatusDescription = N'Delivery failed';
上記のクエリを実行すると、Vacuumer 処理によって削除されていない、すべての失敗した通知が返されます。1 つの通知の配信が複数回失敗した場合は、1 回ごとに 1 行のデータが返されます。
Stock サンプルから 1 回以上失敗した通知の一覧を返すには、次のクエリを実行します。
USE StockInstanceStock;
SELECT DISTINCT(NotificationId)
FROM NSStockNotificationsNotificationDistribution
WHERE DeliveryStatusDescription = N'Delivery failed';