多くのリモートサーバーでアクティブなデータコレクターがあり、インスタンスでアクティブなすべてのデータコレクターの保持期間をキャプチャするクエリを見つけようとしています。
これらはシステムデータコレクターであり、カスタムコレクターではなく、管理データウェアハウスの一部です。
どのテーブルがこのデータを保持するのでしょうか?
管理データウェアハウス用に選択したデータベース内に、列[core].[source_info_internal]
を含むdays_until_expiration
というテーブルがあります
このクエリは、コレクションセットごとの保持期間を提供します。
SELECT [collection_set_uid], [days_until_expiration]
FROM [core].[source_info_internal];
戻り値:
+--------------------------------------+-----------------------+
| collection_set_uid | days_until_expiration |
+--------------------------------------+-----------------------+
| 2DC02BD6-E230-4C05-8516-4E8C0EF21F95 | 14 |
| 49268954-4FD4-4EB6-AA04-CD59D9BB5714 | 14 |
| 3006169E-D33A-4101-A1DE-9F0DABF7D84E | 30 |
| B83A3832-37CD-4C7A-88F6-6696DA5A7E43 | 30 |
| 7B191952-8ECF-4E12-AEB2-EF646EF79FEF | 730 |
+--------------------------------------+-----------------------+
コレクションセットの説明がmsdbに予期せず含まれているため、コレクションセットの名前と保存期間が必要な場合は、次のように使用できます。
SELECT msdb.[name], mdw.[days_until_expiration]
FROM [core].[source_info_internal] mdw
INNER JOIN [msdb].[dbo].[syscollector_collection_sets_internal] msdb
on mdw.[collection_set_uid] = msdb.[collection_set_uid];
(私のシステムでは)を返します:
+---------------------------------+-----------------------+
| name | days_until_expiration |
+---------------------------------+-----------------------+
| Disk Usage | 730 |
| Server Activity | 14 |
| Query Statistics | 14 |
| Stored Procedure Usage Analysis | 30 |
| Table Usage Analysis | 30 |
+---------------------------------+-----------------------+
ただし、データをパージするエージェントジョブは、パラメーターを受け入れるストアドプロシージャを呼び出すため、このクエリはデフォルトの保持期間をリストすることに注意してください。誰かがジョブステップレベルで変更した場合、その情報は取得できません。
プロシージャの定義:
ALTER PROCEDURE [core].[sp_purge_data]
@retention_days smallint = NULL,
@instance_name sysname = NULL,
@collection_set_uid uniqueidentifier = NULL,
@duration smallint = NULL,
@delete_batch_size int = 500
AS
だれかがデフォルト設定を上書きした可能性があるので、その手順のソースコードを見てロジック全体をたどることができます。