sys.dm_qn_subscriptions (Transact-SQL)
サーバーのアクティブ クエリ通知サブスクリプションに関する情報を返します。このビューは、サーバーまたは指定したデータベース内のアクティブなサブスクリプションを確認したり、指定したサーバー プリンシパルを確認する際に使用できます。
列名 |
データ型 |
説明 |
---|---|---|
id |
int |
サブスクリプションの ID。 |
database_id |
int |
通知クエリが実行されたデータベースの ID。このデータベースには、サブスクリプションに関連する情報が格納されています。 |
sid |
varbinary(85) |
このサブスクリプションを作成して所有しているサーバー プリンシパルのセキュリティ ID。 |
object_id |
int |
サブスクリプションのパラメーターに関する情報を格納している内部テーブルの ID。 |
created |
datetime |
サブスクリプションを作成した日時。 |
timeout |
int |
サブスクリプションのタイムアウト値 (秒単位)。この時間が経過した後、通知が行われます。
注
実際の通知の実行時刻は、指定したタイムアウト値より後になることもありますが、指定したタイムアウト時刻が経過してからサブスクリプションが起動するまでの間に、サブスクリプションが無効になる変更が発生した場合、SQL Server ではこの変更時に必ず通知が行われます。
|
status |
int |
サブスクリプションの状態。コードの一覧については、「解説」の表を参照してください。 |
リレーションシップの基数
関連元 |
関連先 |
基準 |
種類 |
---|---|---|---|
sys.dm_qn_subscriptions |
sys.databases |
database_id |
多対一 |
sys.dm_qn_subscriptions |
sys.internal_tables |
object_id |
多対一 |
説明
状態コードが 0 の場合は、未定義の状態であることを示します。
次の状態コードは、変更によりサブスクリプションが起動したことを示します。
コード |
マイナー状態 |
Info |
---|---|---|
65798 |
データが変更されたため、サブスクリプションが起動しました |
挿入によってサブスクリプションがトリガーされました |
65799 |
データが変更されたため、サブスクリプションが起動しました |
削除 |
65800 |
データが変更されたため、サブスクリプションが起動しました |
更新 |
65801 |
データが変更されたため、サブスクリプションが起動しました |
マージ |
65802 |
データが変更されたため、サブスクリプションが起動しました |
テーブルの切り捨て |
66048 |
タイムアウトが発生したため、サブスクリプションが起動しました |
未定義の info モード |
66315 |
オブジェクトが変更されたため、サブスクリプションが起動しました |
オブジェクトまたはユーザーが削除されました |
66316 |
オブジェクトが変更されたため、サブスクリプションが起動しました |
オブジェクトが変更されました |
66565 |
データベースがデタッチまたは削除されたため、サブスクリプションが起動しました |
サーバーまたはデータベースが再起動されました |
66571 |
データベースがデタッチまたは削除されたため、サブスクリプションが起動しました |
オブジェクトまたはユーザーが削除されました |
66572 |
データベースがデタッチまたは削除されたため、サブスクリプションが起動しました |
オブジェクトが変更されました |
67341 |
サーバーのリソースが不足しているため、サブスクリプションがトリガーされました |
サーバーのリソースが不足しているため、サブスクリプションがトリガーされました |
次の状態コードは、サブスクリプションを作成できなかったことを示します。
コード |
マイナー状態 |
Info |
---|---|---|
132609 |
ステートメントがサポートされていないため、サブスクリプションを作成できませんでした |
クエリが複雑すぎます |
132610 |
ステートメントがサポートされていないため、サブスクリプションを作成できませんでした |
サブスクリプションのステートメントが無効です |
132611 |
ステートメントがサポートされていないため、サブスクリプションを作成できませんでした |
サブスクリプションの設定オプションが無効です |
132612 |
ステートメントがサポートされていないため、サブスクリプションを作成できませんでした |
分離レベルが無効です |
132622 |
ステートメントがサポートされていないため、サブスクリプションを作成できませんでした |
内部使用 |
132623 |
ステートメントがサポートされていないため、サブスクリプションを作成できませんでした |
テーブルごとのテンプレートの上限を超えました |
次の状態コードは内部で使用され、check kill モードおよび init モードとして分類されます。
コード |
マイナー状態 |
Info |
---|---|---|
198656 |
内部使用: check kill モードおよび init モード |
未定義の info モード |
198928 |
サブスクリプションが破棄されました |
データベースがアタッチされたため、サブスクリプションが起動しました |
198929 |
サブスクリプションが破棄されました |
ユーザーが削除されたため、サブスクリプションが起動しました |
198930 |
サブスクリプションが破棄されました |
再サブスクリプションのため、サブスクリプションが削除されました |
198931 |
サブスクリプションが破棄されました |
サブスクリプションが強制終了されました |
199168 |
サブスクリプションがアクティブです |
未定義の info モード |
199424 |
サブスクリプションが初期化されていますが、まだアクティブではありません |
未定義の info モード |
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
注 |
---|
ユーザーに VIEW SERVER STATE 権限がない場合、このビューでは現在のユーザーが所有するサブスクリプションに関する情報が返されます。 |
例
A. 現在のユーザーのアクティブなクエリ通知サブスクリプションを返す
次の例では、現在のユーザーのアクティブなクエリ通知サブスクリプションを返します。ユーザーが VIEW SERVER STATE 権限を所有している場合は、サーバー内のアクティブなサブスクリプションがすべて返されます。
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions;
GO
B. 指定したユーザーのアクティブなクエリ通知サブスクリプションを返す
次の例では、ログイン Ruth0 によってサブスクライブされたアクティブなクエリ通知サブスクリプションを返します。
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions
WHERE sid = SUSER_SID('Ruth0');
GO
C. クエリ通知サブスクリプションに関する内部テーブルのメタデータを返す
次の例では、クエリ通知サブスクリプションに関する内部テーブルのメタデータを返します。
SELECT qn.id AS query_subscription_id
,it.name AS internal_table_name
,it.object_id AS internal_table_id
FROM sys.internal_tables AS it
JOIN sys.dm_qn_subscriptions AS qn ON it.object_id = qn.object_id
WHERE it.internal_type_desc = 'QUERY_NOTIFICATION';
GO