1. ホーム
  2. sql-server

DBCC SHRINKFILEでログファイルをBACKUP LOG TO DISKしてもサイズが縮小されない

2023-07-22 01:50:04

質問

データベース[My DB]に以下の情報が入っています。

SQL サーバー 2008

MDFサイズ:30GB

LDFサイズ:67 GB

私はログ ファイルをできるだけ縮小したかったので、これを行う方法を見つけ出すための探求を開始しました。 注意: 私は DBA ではないので (または、DBA に近づいてもいないので)、この探求を通して感覚的に進歩しています。

まず、私はちょうど SSMS、DB プロパティ、ファイル、および初期サイズ (MB) 値を 10 に編集しました。 それによって、ログ ファイルは 62 GB に減少しました (私が入力した 10 MB とは異なります)。 そこで、SQL Profilerをアタッチして、DBCC SHRINKFILEが呼び出されていることを確認しました。 そして、そのコマンドをクエリ エディタに入力したところ、次のような結果が得られました。

DBCC SHRINKFILE (N'My DB_Log' , 10)

と出力されました。

Cannot shrink log file 2 (My DB_Log) because the logical log file located at the end of the file is in use.
DbId   FileId      CurrentSize MinimumSize UsedPages   EstimatedPages
------ ----------- ----------- ----------- ----------- --------------
8      2           8044104     12800       8044104     12800

(1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

その後、それについて調べてみたところ、こんなことがわかりました。

http://support.microsoft.com/kb/907511

ということは、shrinkfileの前にログファイルをバックアップして、仮想ログファイルを解放し、shrinkfileがその仕事をできるようにする必要がある、ということです - 私には意味がわかりません... 意味はわかりませんが...。)

そこで、ログ ファイルをバックアップしてから DBCC SHRINKFILE を実行しようと考えました (そして、以前の DBCC SHRINKFILE コマンドの出力で特定された MinimumSize がそれだったので、新しいログ ファイル サイズを 12800 に変更しました)。

BACKUP LOG [My DB] TO DISK = 'D:\SQLBackup\20110824-MyDB-Log.bak'
GO
DBCC SHRINKFILE (N'My DB_Log' , 12800)
GO

結果は、1回目と同じでした。 ログファイルを62GBまでしか減らせません。

何が間違っているのか、次に何を試せばいいのか、よくわかりません。

どのように解決したらよいのでしょうか。

すでに行った手順に加えて、ログを縮小する前に、リカバリーモードをシンプルに設定する必要があります。

これは推奨されない方法です。 を推奨しません。以前のバックアップ/ログファイルからある時点まで回復する能力を失ってしまいます。

この上の例Bを参照 DBCC SHRINKFILE (トランザクト-SQL) msdn ページで例と説明を参照してください。