2008年5月27日火曜日

SQLServer トランザクションログ 肥大化

気がついたら、トランザクションログファイル(拡張子LDF)が××Gb!

通常は、トランザクションログファイルのバックアップを実行すると、ログの切捨てが自動で行われ圧縮されるのですが、バックアップ中にドライブの空き領域が不足してバックアップが実行できない!なんてことがあります。

ログの管理が不要であれば、ログだけ切り捨てる方法があります。

以下のSQLを実行
ただし、データベースファイルがひとつの場合に限定されますので注意

BACKUP LOG データベース名 WITH TRUNCATE_ONLY



これを実行すると、ログの切捨てが即実行されます。
ただし物理的にファイルは小さくはなりませんので次にデータベースの圧縮を行います。


以下のSQLを実行

DBCC SHRINKFILE( ’ 論理ファイル名 ’)

これによって圧縮が行われます。

※トランザクションログも定期的にバックアップしておきましょう。

例)
データベース名がmydbの場合

use mydb

--圧縮前のサイズ確認など
SELECT * FROM sys.database_files

--理論ファイル名の取得
DECLARE @FileName varchar(max)
SELECT @FileName = name FROM sys.database_files

--ログ切り捨て
BACKUP LOG mydb WITH TRUNCATE_ONLY

--ファイルの圧縮
DBCC SHRINKFILE( @FileName )

--圧縮後のサイズ確認など
SELECT * FROM sys.database_files

GO

0 件のコメント:

Google検索