Skip to main content

SQL Serverのトランザクションログの削除手順

· 3 min read

たまには技術的なことも書かなきゃ。 今回はSQL Serverのトランザクションログの削除手順について。

SQL Serverってログの上限の指定が無い。これが初期設定。 そのため、放置して使っているファイルサイズがとんでもないことになってしまう。 知ってる方々からしたら当たり前のことなんだろうけど、そんなことも知らなかったし、調べても情報が少ない気がしたので書いておくことにします。

【ログが膨大になったときの対応】

-- ログを削除します -- ここではファイル内の領域が空くだけで、ファイルサイズは変化しません。 -- バックアップ先はnulを指定して削除。保存したい場合はファイルパスを記述。 BACKUP LOG <DB_NAME> TO DISK = 'nul' GO

-- 続いてログのファイルサイズを小さくします。 -- 次のSQLを実行し、ログの論理名を取得します。 USE <DB_NAME> SELECT * FROM sys.database_files -- SQL実行結果のnameカラムが論理名を表します。

-- 先ほど取得した論理名(<name>)とファイルサイズ[MB]を指定します。 DBCC SHRINKFILE(<name>, 10000) GO

以上でファイルサイズが小さくなると思います。 もし、ファイルサイズが変わっていなかったら再度実行してください。 (連続で実行すると小さくならないことがありました。そのときはGOを指定していなかったから?)

上記設定で放置しておくと、またファイルサイズがとんでもないことになるので、ログサイズの上限を設定します。

【ログサイズの上限を設定】 SQL Server Management Studioから行います。 DB名を右クリック → プロパティ → 左メニュー:ファイル "自動拡張" の項目を設定します。

参考URL ■SQL Server でのトランザクション ログが満杯の場合のエラー - 松本崇博 Blog (SQL Server Tips)

http://d.hatena.ne.jp/matu_tak/20091214/1260703464

■「DBCC SHRINKFILE」の検索結果 - 松本崇博 Blog (SQL Server Tips)

http://d.hatena.ne.jp/matu_tak/searchdiary?word=DBCC%20SHRINKFILE