バックアップと切り捨てによるトランザクションログのクリア方法

2024-04-04

SQL Serverトランザクションログは、データベースへの変更を記録するファイルです。このログは、データベースの復旧やポイントインタイム復元 (PITR) に使用されます。

トランザクションログをクリアする必要がある理由

トランザクションログは時間の経過とともに肥大化するため、定期的にクリアする必要があります。ログファイルがいっぱいになると、データベースのパフォーマンスが低下したり、ディスク容量が不足したりする可能性があります。

トランザクションログをクリアするには、以下の方法があります。

バックアップと切り捨て

  1. データベースの完全バックアップを実行します。
  2. ログバックアップを実行します。
  3. バックアップと切り捨てコマンドを実行します。
USE <データベース名>
GO
BACKUP DATABASE <データベース名> TO DISK = '<バックアップファイル名>'
GO
BACKUP LOG <データベース名> TO DISK = '<ログバックアップファイル名>'
GO
CHECKPOINT
GO
DBCC SHRINKFILE (<ログファイル名>, 1)
GO

トランザクションログの切り捨て

  1. データベースが完全復旧モデルまたは一括ログ復旧モデルであることを確認します。
  2. CHECKPOINTコマンドを実行します。
  3. DBCC SHRINKFILEコマンドを実行します。
USE <データベース名>
GO
CHECKPOINT
GO
DBCC SHRINKFILE (<ログファイル名>, 1)
GO

トランザクションログのバックアップと削除

  1. ログファイルを削除します。
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


SQL Server の ntext 列のデータ長

ntext 列のデータ長を確認するには、次の方法があります:LEN() 関数: LEN() 関数は、文字列の長さを返します。ntext 列の場合、LEN() 関数は文字数を返します。sys. columns ビュー: sys. columns ビューは、テーブルの列に関する情報を提供します。ntext 列の場合、sys...


T-SQL: 文字列結合の逆操作 - 文字列を複数のレコードに分割する方法

このチュートリアルでは、T-SQL を用いて文字列を複数のレコードに分割する様々な方法を、詳細な解説とサンプルコードと共に紹介します。以下の4つの方法を紹介します。SUBSTRING() 関数は、文字列から部分文字列を抽出するために使用できます。分割したい文字列と区切り文字を指定することで、個々のレコードを取り出すことができます。...


SQL Serverでデータベースを削除する際のエラー5030「データベースをロックできません」の解決方法

SQL Serverでデータベースを削除しようとすると、エラー5030「データベースをロックできません」が発生することがあります。このエラーは、データベースが別のプロセスによって使用されているため、削除できないことを意味します。原因このエラーが発生する主な原因は以下の3つです。...


システム動的管理ビュー (DMV) を使用してクエリ履歴を表示する:詳細な情報を取得する方法

SQL Server Management Studio (SSMS) は、SQL Server データベースを管理するためのツールです。SSMS を使用して過去に実行したクエリ履歴を表示するには、いくつかの方法があります。方法クエリエディターの履歴ペインを使用する...


SQL ServerとPostgreSQLで日付差計算を使いこなす

SQL Server と PostgreSQL には、DATEDIFF() 関数を使用して、2 つの日付間の差を計算する機能があります。この関数は、年、月、週、日などの単位で日付差を返すことができます。使用例SQL Serverこのクエリは、2020年1月1日から2024年4月22日までの日数を計算し、days_diff という名前の列に結果を出力します。結果は 1597 となります。...


SQL SQL SQL SQL Amazon で見る



SQL Server ログファイルの切断に関する参考資料

SQL Server ログファイルは、データベースへの変更を追跡するために使用されます。ログファイルがいっぱいになると、データベースのパフォーマンスが低下したり、停止したりする可能性があります。ログファイルのサイズを管理するために、TRUNCATE コマンドを使用できます。