データベースのデータとログファイルのディスク使用状況と未使用領域を開放してファイルサイズを圧縮する方法を掲載します。

動作確認は SQL Server 2005 Developer Edition で行っています。

1. ディスク使用状況を確認する

ファイルレベルでの使用状況はsp_helpdb ストアドプロシージャで確認できますが、データベースやテーブル、インデックス付きビューの使用状況を確認する場合は、sp_spaceuserd ストアドプロシージャを指定します。引数を指定しないとデータベースのディスク使用状況(データ+ログファイル)を確認できます。テーブル名などを指定すると、指定したオブジェクトのディスク使用状況を確認できます。

-- データベースやテーブルなどのディスク使用量を求める
USE Component
GO
-- データベースの使用量を求める
exec sp_spaceused

-- テーブルの使用量(データ,ログ)を求める
exec sp_spaceused 'dbo.Article'

2. データベースのディスクスペースを圧縮する

データベースレベルやファイルレベルで未使用領域を圧縮できます。データベースを圧縮する場合は DBCC SHRINKDATABASE 文を使用します。ファイル単位で圧縮を行う場合は、DBCC SHRINKFILE 文を使用します。

-- すべてのデータベースを対象として、トランザクション ログ領域の使用に関する統計情報を提供します。
DBCC SQLPERF(LOGSPACE)

USE SampleDB
GO
-- データベースを圧縮する
DBCC SHRINKDATABASE ('SampleDB', 30)
-- データベースファイルを圧縮する
DBCC SHRINKFILE('SampleDB1')

3. まとめ

今回の説明は以上です。指摘点などがありましたらご連絡ください。