sys.dm_db_log_stats (Transact-SQL)
適用対象: SQL Server 2016 (13.x) SP 2 以降 Azure SQL Database Azure SQL Managed Instance
概要レベルの属性と、データベースのトランザクション ログ ファイルに関する情報を返します。 この情報は、トランザクション ログの正常性の監視と診断に使用します。
構文
sys.dm_db_log_stats ( database_id )
引数
database_id |NULL | DEFAULT
データベースの ID です。 database_id
が int
です。 有効な入力は、データベース、 NULL
、または DEFAULT
の ID 番号です。 既定値は、NULL
です。 NULL
と DEFAULT
は、現在のデータベースのコンテキストで同等の値です。
組み込み関数 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.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_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_id
、 recovery_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)