web-dev-qa-db-ja.com

SQL Serverデータベースで自動拡張が発生したときにアラートを受け取るにはどうすればよいですか?

私たちのSharePointデータベースは、(無意味な)1MBのデフォルトの自動拡張に設定されており、これが間違っていることをアプリケーション所有者に「納得させる」必要があります。 SQL Serverの自動拡張アクティビティを監視する手段はありますか?

このアクティビティが1MBの設定でどのくらいの頻度で発生しているかを報告できるようにしたいと思います。

5
Jeff Costa

ログファイルの自動拡張は、SQLログまたはアプリケーションイベントログで報告されます。 SQLTraceやSQLProfilerなどを使用してSQLイベントを監視することもできます。これは、 SQLイベントの監視 について説明しているMSDNの記事です。

EDIT:アプリケーションイベントログで、自動成長キャンセルイベントの場合はイベントID 5144を、成功/完了した自動成長イベントの場合は5145を探します。

EDIT2:SQLログでdbログファイルのauogrowthイベントを探すには、次を使用できます。

EXEC xp_readerrorlog 0,1,'autogrow'

Xp_readerrorlogにアーカイブされたエラーログファイルを使用させるには、0をインクリメントします。 0から(n-1)ここで、nはエラーログファイルの数です。

自動成長イベントのイベント通知を設定することもできます。このようなもの:

CREATE EVENT NOTIFICATION data_file_autogrow_notifier
ON DATABASE
FOR DATA_FILE_AUTO_GROW
TO SERVICE 'NotifyAutogrow', 'current database' ;

またはログファイルの場合:

CREATE EVENT NOTIFICATION log_file_autogrow_notifier
ON DATABASE
FOR LOG_FILE_AUTO_GROW
TO SERVICE 'NotifyAutogrow', 'current database' ;

NotifyAutogrowは、ServiceBrokerインスタンスの名前です。詳細 ここ 。ご使用の環境に合わせてこのサービスを設定する必要があります。

3
squillman

あなたのためのさらなる弾薬として、データファイルの自動成長について議論している私が行ったこのブログ投稿をチェックしてください: データファイルサイズ管理の重要性

3
Paul Randal

常に有効になっているだけで、SQLログを無効にすることはできません。自動成長イベントが表示されない場合は、ログがカバーする時間枠内に何も発生していない可能性があります。 SQLログで自動拡張を探すために使用できるSQLについては、私の回答の編集を参照してください。

それはあなたが話していることに依存します。

私の経験では、SQLServerは提案されているように自動拡張をERRORLOGに記録しませんでした。代わりに、デフォルトトレースに記録され、デフォルトトレースは無効または有効にできます。

有効になっているかどうかを確認するには、以下を参照してください。

select name, value_in_use
from sys.configurations
where name='default trace enabled'

無効になっている場合は、次のように有効にできます。

sp_configure 'default trace enabled', 1
go

後でRECONFIGUREを実行することを忘れないでください。

autogrowイベントを確認するには、次を使用できます。

SELECT databaseid, filename, SUM(IntegerData*8) AS Growth, Duration, StartTime
FROM ::fn_trace_gettable('C:\SQL Server\MSSQL10_50.INSTANCENAME\MSSQL\Log\log_4.trc', default)
WHERE EventClass = 92 OR EventClass = 93
GROUP BY databaseid, filename, IntegerData, Duration, StartTime

ここで、fn_trace_gettableのパラメーターは、現在の(またはアーカイブされた)トレースの名前です。

現在のトレースのパスは次のように見つけることができます。

SELECT path FROM sys.traces WHERE is_default = 1;
0
ivanmp

ログファイルの自動拡張は、SQLログまたはアプリケーションイベントログで報告されます。 SQLTraceやSQLProfilerなどを使用してSQLイベントを監視することもできます。

0
Toby