ほとんどのサーバーでは、 dbcc checkdb を実行する予定です。
DBCC DBINFO() を使用して、最後の既知の適切なDBCC Checkdbを取得できます。
SQLサーバーログに残っているトラックを 読み取ることができます と、次のような画像が表示されます。
または、次のスクリプトを実行できます。
IF OBJECT_ID('TEMPDB..#MAINT') IS NOT NULL
DROP TABLE #maint
CREATE TABLE #maint (Results varchar(255) NULL)
INSERT INTO #maint(Results) EXEC('master..xp_cmdshell ''sqlcmd -E -Q"dbcc checkdb([my_database])"''')
select * from #maint
デフォルトのトレース も確認できます。
私は何をしたいですか?
前回dbcc checkdbを実行するのにかかった時間(== --- ==)を調べる方法。
スケジュールされている場合は、SQLエージェントジョブの runtime duration から取得することがオプションです。
そして、あなたが Olaのソリューション (私がお勧めする)を使用している場合、彼のdbo.CommandLog
テーブルには、DBCC作業を含む、それが実行するすべてのアクションのためのStartTime
およびEndTime
列があります。
正しく理解できれば
EXEC sp_readerrorlog 0, 1, 'dbcc'
は、必要な生データを提供します。
それを和らげるためにあなたは次のようなものを使うことができます
DECLARE @tempLog as Table (logdate datetime, theSpid varchar(10), theText varchar(max))
INSERT INTO @tempLog EXEC sp_readerrorlog 0, 1, 'dbcc'
SELECT
SUBSTRING(thetext,CHARINDEX('(',theText) + 1,(CHARINDEX(')',theText)+LEN(')'))-CHARINDEX('(', theText) - 2) as theDatabase,
SUBSTRING(thetext,CHARINDEX('Elapsed Time:',theText),(CHARINDEX('seconds',theText)+LEN('seconds'))-CHARINDEX('Elapsed time: ', theText)) as DBBC_CheckDB_Time
FROM @tempLog
それが役に立てば幸い