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 |既定
データベースの ID です。 database_id
が int
です。 有効な入力は、データベースの ID 番号、 NULL
または DEFAULT
. 既定値は、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 | 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_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)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示