Share via


NS<NotificationClassName>NotificationDistribution ビュー

Microsoft SQL Server Notification Services の複数の内部テーブルからデータを結合し、通知の配信に関する情報を提供します。Notification Services では、名前付け規則 NSNotificationClassNameNotificationDistribution により、各通知クラスに 1 つのビューが作成されます。

たとえば、Notification Services に含まれる Stock サンプルには、2 つの通知クラス、StockNotificationsPortfolioNotifications があります。この場合、関連付けられたビューの名前は、NSStockNotificationsNotificationDistributionNSPortfolioNotificationsNotificationDistribution になります。

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';

参照

関連項目

Notification Services のビュー

その他の技術情報

ディストリビュータ ログ記録の構成

ヘルプおよび情報

SQL Server 2005 の参考資料の入手