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 |既定

データベースの ID です。 database_idintです。 有効な入力は、データベースの ID 番号、 NULLまたは DEFAULT. 既定値は、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 MB (メガバイト)の現在の仮想ログ ファイル (VLF) サイズ。
total_vlf_count bigint トランザクション ログ内の 仮想ログ ファイル (VTF) の合計数。
total_log_size_mb float トランザクション ログの合計サイズ (MB (メガバイト))。
active_vlf_count bigint トランザクション ログ内のアクティブな 仮想ログ ファイル (VTF) の合計数。
active_log_size_mb float MB (メガバイト)でのアクティブなトランザクション ログの合計サイズ。
log_truncation_holdup_reason nvarchar(60) ログの切り捨て保留理由。 値は次のsys.databases列とlog_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_チェックpoint_lsn nvarchar(24) 最後のチェックポイント ログ シーケンス番号 (LSN) です。
log_since_last_チェックpoint_mb float 最後のチェックポイント ログ シーケンス番号 (LSN) 以降のMB (メガバイト)のログ サイズ。
log_recovery_lsn nvarchar(24) データベースの復旧ログ シーケンス番号 (LSN)。 チェックポイント LSN より前に発生した場合log_recovery_lsnは、log_recovery_lsn最も古いアクティブ なトランザクション LSN、それ以外の場合log_recovery_lsnは チェックpoint LSN です。
log_recovery_size_mb float ログ回復ログ シーケンス番号 (LSN) 以降のMB (メガバイト)のログ サイズ。
recovery_vlf_count bigint フェールオーバーまたはサーバーの 再起動があった場合に復旧する仮想ログ ファイル (VTF) の合計数。

解説

セカンダリ レプリカとして可用性グループに参加しているデータベースに対して実行 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)