ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

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. パラメタ設定が少し怪しいけど、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')