次の情報を含むデータベース[MyDB]があります
。SQLServer2008MDF
サイズ:30 GB
LDFサイズ:67 GB
ログファイルをできるだけ縮小したかったので、これを行う方法を見つけるために探求を始めました。警告:私はDBAではなく(またはDBAに近づいていません)、この探求を通して感じて進歩してきました。
まず、SSMS、DBプロパティ、ファイルに移動し、初期サイズ(MB)の値を10に編集しました。これにより、ログファイルが62 GBに減少しました(入力した10 MBとは異なります)。そこで、SQLプロファイラーをアタッチして、DBCCSHRINKFILEが呼び出されていることを確認しました。次に、そのコマンドをクエリエディタに入力しました。結果は次のとおりです。
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
これは、仮想ログファイルが解放され、シュリンクファイルがその仕事を実行できるように、シュリンクファイルの前にログファイルをバックアップする必要があることを示しています-それが何を意味するのかわかりません...私はここで言い換えています:)
したがって、ログファイルをバックアップしてから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
結果は最初の周回と同じでした。ログファイルは62GBまでしか取得できません。
何が間違っているのか、次に何を試すべきかわかりません。