web-dev-qa-db-ja.com

SQL Serverの縮小コマンド 'estimated_completion_time'が増え続ける

SQL 2012 R2を実行しています...

Microsoft SQL Server 2014(SP2-GDR)(KB4019093)-12.0.5207.0(X64)Standard Edition(64ビット)

縮小コマンドを実行しました

DBCC SHRINKDATABASE(databaseNameHere)

(はい、私はこれが定期的に行われるべきではないことを知っています... 200 GBのデータベースがあり、何年にもわたるデータをクリアし、約100 GBのスペースを取り戻すことができるはずです)

1.5時間でタスクのステータスを確認したところ、49.1xxx percent_completeでした。

稼働時間は2.5時間です。現在は49.5xxx percent_completeです。

さらに、最後の20分間で、estimated_completion_timesys.dm_exec_requestsにあります)が8,741,035ミリ秒から9,385,086ミリ秒になりました...

ドライブにはまだ大量の空き容量があります。これは、誰も使用していない開発/テストデータベースです。推定時間が増えるのはなぜですか?

ブロックがないことを確認するためにsp_who2 activeを使用しています...

3
adam

SHRINKDATABASESHRINKFILEは実際には最後の瞬間までディスクにスペースを解放しません。最初にファイル内のすべてのコンテンツを移動する必要があります(これは長い時間がかかる部分です) )。

進行状況が一定していないように見える理由:空き領域/使用済み領域は大きなファイル全体に広がっているため、空のパッチが検出されると「スキップ」され、使用済みのセクションに到達すると「スローダウン」します。ページ。

コメントで述べたように、SHRINKFILEではなくSHRINKDATABASEを使用することを強くお勧めします。これは、個々のファイルのターゲットサイズを制御し、各ファイルに適切なターゲットを与えることができるためです。たとえば、私は通常、各データファイルに15〜25%の空き領域を残そうとします。

4
BradC