DB・ログファイルの圧縮
DBファイルが膨らんで空き領域が増えている場合、圧縮する必要がある
まず、DBの情報を収集
exec sp_helpdb 'dbname' name db_size owner dbid created status compatibility_level dbname 3055.44 MB dbname 9 06 21 2012 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=661, Collation=Japanese_CI_AS, SQLSortOrder=0, IsAutoShrink, IsTornPageDetectionEnabled, IsAutoCreateStatistics, IsAutoUpdateStatistics 100 name fileid filename filegroup size maxsize growth usage dbname-log_Data 1 c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\dbname.mdf PRIMARY 2807680 KB Unlimited 10% data only dbname-log_Log 2 c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\dbname.ldf NULL 321088 KB Unlimited 10% log only
DBファイルの圧縮
DBCC SHRINKFILE ('dbname-log_Data', 1);
- パラメタ設定が少し怪しいけど、1にすればとりあえず減らされた
トランザクションログを圧縮する方法
※トランザクションログはバックアップしないと圧縮が効かないため、空のバックアップを実行する。
myDbNamaのトランザクションログバックアップ処理実行
BACKUP LOG [myDbName] TO DISK = N'NUL' GO
ログ・ファイルを特定
USE myDbName GO SELECT 'DBCC SHRINKFILE (''' + name + ''', 1);' FROM sys.database_files WHERE type_desc = 'LOG';
DBファイルの圧縮
DBCC SHRINKFILE ('dbname-log_Data', 1);
ログの利用状態を確認するコマンド
DBCC SQLPERF('LOGSPACE')