sys.dm_db_log_stats (Transact-SQL)

適用対象: SQL Server 2016 (13.x) SP 2 以降 Azure SQL Database Azure SQL Managed Instance

概要レベルの属性と、データベースのトランザクション ログ ファイルに関する情報を返します。 この情報は、トランザクション ログの正常性の監視と診断に使用します。

Transact-SQL 構文表記規則

構文

 sys.dm_db_log_stats ( database_id )

引数

database_id |NULL | DEFAULT

データベースの ID です。 database_idintです。 有効な入力は、データベース、 NULL、または DEFAULTの ID 番号です。 既定値は、NULL です。 NULLDEFAULT は、現在のデータベースのコンテキストで同等の値です。
組み込み関数 DB_ID を指定できます。 データベース名を指定しないで DB_ID を使用する場合、現在のデータベースの互換性レベルが 90 以上である必要があります。

返されるテーブル

列名 データ型 説明
database_id int データベース ID。

Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。
recovery_model nvarchar(60) データベースの復旧モデル。 指定できる値は、次のとおりです。
SIMPLE
BULK_LOGGED
FULL
log_min_lsn nvarchar(24) トランザクション ログの現在の開始 ログ シーケンス番号 (LSN)
log_end_lsn nvarchar(24) トランザクション ログ内の最後のログ レコードの ログ シーケンス番号 (LSN)。
current_vlf_sequence_number bigint 現在 仮想ログ ファイル (VLF) 実行時のシーケンス番号です。
current_vlf_size_mb float 現在 仮想ログ ファイル (VLF) サイズ (MB 単位)。
total_vlf_count bigint トランザクション ログに仮想ログ ファイル (VLF) の合計数。
total_log_size_mb float トランザクション ログの合計サイズ (MB 単位)。
active_vlf_count bigint トランザクション ログにされているアクティブな仮想ログ ファイル (VLF) の合計数。
active_log_size_mb float アクティブなトランザクション ログの合計サイズ (MB 単位)。
log_truncation_holdup_reason nvarchar(60) ログの切り捨て保留理由。 値は、sys.databaseslog_reuse_wait_desc列と同じです。 (これらの値の詳細については、 を参照してください。トランザクション ログ)。
指定できる値は、次のとおりです。
NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
レプリケーション
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
その他の一時的な
log_backup_time datetime 最後のトランザクション ログのバックアップ時刻。
log_backup_lsn nvarchar(24) 最後のトランザクション ログ バックアップ ログ シーケンス番号 (LSN)
log_since_last_log_backup_mb float 前回のトランザクション ログ バックアップ ログ シーケンス番号 (LSN)以降のログ サイズ (MB)。
log_checkpoint_lsn nvarchar(24) 最後のチェックポイント ログ シーケンス番号 (LSN)
log_since_last_checkpoint_mb float 最後のチェックポイント ログ シーケンス番号 (LSN)以降のログ サイズ (MB)。
log_recovery_lsn nvarchar(24) データベースの復旧 ログ シーケンス番号 (LSN) 。 チェックポイント LSN の前に log_recovery_lsn が発生した場合、 log_recovery_lsn は最も古いアクティブなトランザクション LSN です。それ以外の場合 log_recovery_lsn はチェックポイント LSN です。
log_recovery_size_mb float ログ回復 ログ シーケンス番号 (LSN)以降のログ サイズ (MB)。
recovery_vlf_count bigint フェールオーバーまたはサーバーの再起動があった場合に復旧する 仮想ログ ファイル (VLF) の合計数。

解説

セカンダリ レプリカとして可用性グループに参加しているデータベースに対して sys.dm_db_log_stats を実行すると、上記のフィールドのサブセットのみが返されます。 現在、セカンダリ データベースに対して実行すると、 database_idrecovery_model、および log_backup_time のみが返されます。

アクセス許可

データベースでの VIEW SERVER STATE 権限が必要です。

SQL Server 2022 以降でのアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。

A. VTF の数が多い SQL Server インスタンス内のデータベースを特定する

次のクエリでは、ログ ファイル内に 100 を超える VTF を含むデータベースが返されます。 多数の VTF がデータベースの起動、復元、復旧時間に影響する可能性があります。

SELECT name AS 'Database Name', total_vlf_count AS 'VLF count' 
FROM sys.databases AS s
CROSS APPLY sys.dm_db_log_stats(s.database_id) 
WHERE total_vlf_count  > 100;

B. 4 時間以上前のトランザクション ログ バックアップを使用して SQL Server インスタンス内のデータベースを特定する

次のクエリは、インスタンス内のデータベースの最後のログ バックアップ時間を決定します。

SELECT name AS 'Database Name', log_backup_time AS 'last log backup time' 
FROM sys.databases AS s
CROSS APPLY sys.dm_db_log_stats(s.database_id); 

参照

動的管理ビューと動的管理関数 (Transact-SQL)
データベース関連の動的管理ビュー (Transact-SQL)
sys.dm_db_log_space_usage (Transact-SQL)
sys.dm_db_log_info (Transact-SQL)