バックアップと切り捨てによるトランザクションログのクリア方法
SQL Serverトランザクションログは、データベースへの変更を記録するファイルです。このログは、データベースの復旧やポイントインタイム復元 (PITR) に使用されます。
トランザクションログをクリアする必要がある理由
トランザクションログは時間の経過とともに肥大化するため、定期的にクリアする必要があります。ログファイルがいっぱいになると、データベースのパフォーマンスが低下したり、ディスク容量が不足したりする可能性があります。
トランザクションログをクリアするには、以下の方法があります。
バックアップと切り捨て
- データベースの完全バックアップを実行します。
- ログバックアップを実行します。
- バックアップと切り捨てコマンドを実行します。
USE <データベース名>
GO
BACKUP DATABASE <データベース名> TO DISK = '<バックアップファイル名>'
GO
BACKUP LOG <データベース名> TO DISK = '<ログバックアップファイル名>'
GO
CHECKPOINT
GO
DBCC SHRINKFILE (<ログファイル名>, 1)
GO
トランザクションログの切り捨て
- データベースが完全復旧モデルまたは一括ログ復旧モデルであることを確認します。
- CHECKPOINTコマンドを実行します。
- DBCC SHRINKFILEコマンドを実行します。
USE <データベース名>
GO
CHECKPOINT
GO
DBCC SHRINKFILE (<ログファイル名>, 1)
GO
トランザクションログのバックアップと削除
- ログファイルを削除します。
USE <データベース名>
GO
BACKUP LOG <データベース名> TO DISK = '<ログバックアップファイル名>'
GO
DELETE FILE <ログファイル名>
GO
注意事項
- トランザクションログをクリアする前に、データベースの完全バックアップを実行することを忘れないでください。
- 完全復旧モデルまたは一括ログ復旧モデルを使用している場合は、ログバックアップを実行してからトランザクションログを切り捨ててください。
- トランザクションログをクリアすると、データベースの復旧ポイントが失われます。
- 上記の方法以外にも、サードパーティ製のツールを使用してトランザクションログをクリアすることができます。
USE AdventureWorks2019
GO
BACKUP DATABASE AdventureWorks2019 TO DISK = 'C:\Backups\AdventureWorks2019_FULL.bak'
GO
BACKUP LOG AdventureWorks2019 TO DISK = 'C:\Backups\AdventureWorks2019_LOG.bak'
GO
CHECKPOINT
GO
DBCC SHRINKFILE (AdventureWorks2019_log, 1)
GO
USE AdventureWorks2019
GO
CHECKPOINT
GO
DBCC SHRINKFILE (AdventureWorks2019_log, 1)
GO
USE AdventureWorks2019
GO
BACKUP LOG AdventureWorks2019 TO DISK = 'C:\Backups\AdventureWorks2019_LOG.bak'
GO
DELETE FILE AdventureWorks2019_log
GO
- 上記のコードは、AdventureWorks2019データベースを使用しています。
- コードを実行する前に、データベース名とファイルパスを環境に合わせて変更してください。
トランザクションログをクリアする他の方法
T-SQLコマンド
- RESTORE DATABASEコマンドを使用して、データベースを特定の時点まで復元します。この操作により、トランザクションログは復元時点までのみに切り捨てられます。
- DBCC SHRINKDATABASEコマンドを使用して、データベースとトランザクションログファイルを同時に圧縮します。
SSMS
- SQL Server Management Studio (SSMS) を使用して、トランザクションログをバックアップして削除することができます。
- SSMSを使用して、データベースを特定の時点まで復元することもできます。
サードパーティ製ツール
- 多くのサードパーティ製ツールは、トランザクションログの管理機能を提供しています。これらのツールは、トランザクションログのバックアップ、削除、圧縮を自動化することができます。
sql-server transaction-log