トランザクション ログ (.LDF) がデータベース ファイル (.MDF) の何倍も大きいデータベースがいくつかあります。
これらを自動的に縮小したり、大きくならないようにするにはどうすればよいですか?
トランザクション ログ (.LDF) がデータベース ファイル (.MDF) の何倍も大きいデータベースがいくつかあります。
これらを自動的に縮小したり、大きくならないようにするにはどうすればよいですか?
それは仕事をするべきです
use master
go
dump transaction <YourDBName> with no_log
go
use <YourDBName>
go
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs
go
-- then you can call to check that all went fine
dbcc checkdb(<YourDBName>)
警告の言葉
ログをダンプするとトランザクション履歴が失われるため、適切なバックアップ戦略を必要としないテスト/開発データベースでのみ実際に使用します。ライブ システムでは、 Cade Rouxが推奨するソリューションを使用する必要があります
トランザクション ログをバックアップして圧縮します。
DB が定期的にバックアップされ、チェックポイントで切り捨てられている場合、制御不能になることはありませんが、これらの間隔の間に多数 (サイズ) のトランザクションを実行している場合は、次のチェックポイントまで増加します。
Enterprise Manager > All Tasks > Shrink Database でデータベースを右クリックします。
DBCC SHRINKFILE.
ここでは誰も言わなかったので、次のようにします。決してトランザクション ログを圧縮しないでください。これは、SQL Server の観点からは悪い考えです。
毎日のデータベース バックアップと毎時 (またはそれ以下) のトランザクション ログ バックアップを実行して、トランザクション ログを小さく保ちます。トランザクション ログのバックアップ間隔は、データベースのビジー状態によって異なります。
もう 1 つの方法は、データベースの復旧モードをシンプルに設定することです (まだ設定されていない場合)。これにより、ログ ファイルが急速に大きくなるのを防ぐことができます。最近、トランザクション ログがいっぱいになり、トランザクションが許可されなくなるという問題が発生しました。
複数回答の圧縮ファイルと単純な復旧モードを組み合わせることで、ログ ファイルが妥当なサイズに保たれました。
クエリ アナライザーの使用:
USE yourdabatase
SELECT * FROM sysfiles
次のようなものが見つかるはずです。
FileID …
1 1 24264 -1 1280 1048578 0 yourdabatase_Data D:\MSSQL_Services\Data\yourdabatase_Data.MDF
2 0 128 -1 1280 66 0 yourdabatase_Log D:\MSSQL_Services\Data\yourdabatase_Log.LDF
ログ ファイルのファイル ID を確認します (ほとんどの場合、2 です)。チェックポイント コマンドを 2 ~ 3 回実行して、すべてのページをハード ドライブに書き込みます。
Checkpoint
GO
Checkpoint
GO
次のトランザクション コマンドを実行して、ログ ファイルを 1 MB にトランクします。
DUMP TRAN yourdabatase WITH no_log
DBCC SHRINKFILE(2,1) /*(FileID , the new size = 1 Mb)*/
Here is what I have been Using
BACKUP LOG <CatalogName> with TRUNCATE_ONLY
DBCC SHRINKDATABASE (<CatalogName>, 1)
use <CatalogName>
go
DBCC SHRINKFILE(<CatalogName_logName>,1)
ここで見つけることができる sp_force_shrink_log を試して ください http://www.rectanglered.com/sqlserver.php