ファイル増加イベントを特定する


9

デフォルトの自動拡張設定(1 MBまたは10%の増分)で作成され、長期間にわたって拡張された多数のDBをポートフォリオで見つけました。各DBファイルの外部断片化の量のゲージを取得したい場合、メタデータからDBファイルのサイズが(自動拡張または手動で)変更された回数を取得できますか?明確にするために、インスタンスの再起動以降だけでなく、DBの存続期間中のDBファイルの変更履歴をメタデータから取得できますか?


1
それらがいずれかの時点で縮小されていない限り、これは自動拡張設定に基づいて初期サイズから現在のサイズまでの単純な計算になりますか?
マーティン・スミス

自動拡張によってのみ変更された場合、私は同意しますが、自動拡張設定の外にある可能性がある手動の変更が行われたのを見ました。
MattyZDBA、2013

回答:


20

有効になっている場合、デフォルトのトレースから自動拡張イベント情報を取得できます。

select distinct
    ei.eventid,
    e.name
from sys.fn_trace_geteventinfo(1) ei
inner join sys.trace_events e
on e.trace_event_id = ei.eventid
where name like '%grow%';

これから、デフォルトのトレースには、データファイルの自動拡張イベントとログファイルの自動拡張イベントのキャプチャが含まれていることがわかります。そのインスタンスでデフォルトのトレースが有効になっているかどうかを確認するには、次のようにします。

exec sp_configure 'default trace enabled';
go

注:これは高度な構成オプションであるため、show advanced optionsを介してこの構成オプションを表示するには、1に設定する必要がありますsp_configure。また、ファイルが手動で拡張された場合これら2つのイベントはトリガーされません

これらのイベントを取得するための簡単なサンプルクエリを次に示します。

select
    te.name as event_name,
    tr.DatabaseName,
    tr.FileName,
    tr.StartTime,
    tr.EndTime
from sys.fn_trace_gettable('<Trace Path>', 0) tr
inner join sys.trace_events te
on tr.EventClass = te.trace_event_id
where tr.EventClass in (92, 93)
order by EndTime;

そして、あなた<Trace Path>はシステム関数から得ることができますsys.fn_trace_getinfo

select *
from sys.fn_trace_getinfo(1);

これは良い情報です。これらのイベントの一部はデフォルトのトレースから期限切れになる可能性があることを覚えておいてください。
Nic

もちろんですが、OPが実際に適切な監査を行うことでこれを実現できるのは、これが唯一の独創的な監視だと思います。
トーマス・ストリンガー、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.