web-dev-qa-db-ja.com

DBCCFREEPROCCACHEに関する質問

SQL Server2005のパフォーマンスの問題のトラブルシューティングにspAskBrentを使用しました。

問題は、誰かがDBCCFREEPROCCACHEを実行したことであることがわかりました。データベースのパフォーマンスが低下し(PLEが非常に低くなり)、クエリがタイムアウトしました。

誰がクエリを実行してプランキャッシュを解放したかを知るにはどうすればよいですか?

2
Jacky Choi

インスタンスでまだ有効になっている場合は、SQLServerのdefault trace内でこれを見つけることができるはずです。キャプチャされたイベントの1つはSecurity Audit: Audit DBCC Eventであり、イベントの詳細を読むことができます ここ

デフォルトのトレースが有効になっている場合は、次の MSSQLTips.comの記事からクエリを実行してDBCCがいつ実行されたかを確認してください

DECLARE @path NVARCHAR(260)

SELECT @path=path FROM sys.traces WHERE is_default = 1

--Security Audit: Audit DBCC CHECKDB, DBCC CHECKTABLE, DBCC CHECKCATALOG,
--DBCC CHECKALLOC, DBCC CHECKFILEGROUP Events, and more.
SELECT TextData, Duration, StartTime, EndTime, SPID, ApplicationName, LoginName  
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass IN (116) AND TextData like 'DBCC%CHECK%'
ORDER BY StartTime DESC
2
user507