Bagikan melalui


Mengubah Penangkapan Data - sys.dm_cdc_log_scan_sessions

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Mengembalikan satu baris untuk setiap sesi pemindaian log dalam database saat ini. Baris terakhir yang dikembalikan mewakili sesi saat ini. Anda dapat menggunakan tampilan ini untuk mengembalikan informasi status tentang sesi pemindaian log saat ini, atau informasi agregat tentang semua sesi sejak instans SQL Server terakhir dimulai.

Rekaman di diatur sys.dm_cdc_log_scan_sessions ulang setiap kali instans SQL Server dimulai ulang atau setelah failover terjadi. Selain itu, jika database yang dikueri berada dalam peran sekunder dari grup ketersediaan AlwaysOn, maka tidak ada rekaman yang dikembalikan.

Untuk informasi selengkapnya, tinjau Apa itu pengambilan data perubahan (CDC)?

Nama kolom Jenis data Deskripsi
session_id int ID sesi.

0 = data yang dikembalikan dalam baris ini adalah agregat dari semua sesi sejak instans SQL Server terakhir dimulai.
start_time datetime Waktu sesi dimulai.

Ketika session_id = 0, pengumpulan data agregat waktu dimulai.
end_time datetime Waktu sesi berakhir.

NULL = sesi aktif.

Ketika session_id = 0, waktu sesi terakhir berakhir.
durasi int Durasi (dalam detik) sesi.

0 = sesi tidak berisi transaksi pengambilan data perubahan.

Ketika session_id = 0, jumlah durasi (dalam detik) dari semua sesi dengan transaksi pengambilan data perubahan.
scan_phase nvarchar(200) Fase sesi saat ini. Berikut ini adalah nilai yang mungkin dan deskripsinya:

1: Membaca konfigurasi
2: Pemindaian pertama, membangun tabel hash
3: Pemindaian kedua
4: Pemindaian kedua
5: Pemindaian kedua
6: Penerapan versi skema
7: Pemindaian terakhir
8: Selesai

Ketika session_id = 0, nilai ini selalu "Agregat".
error_count int Jumlah kesalahan yang ditemui.

Ketika session_id = 0, jumlah total kesalahan di semua sesi.
start_lsn nvarchar(23) Memulai LSN untuk sesi.

Ketika session_id = 0, LSN awal untuk sesi terakhir.
current_lsn nvarchar(23) LSN saat ini sedang dipindai.

Ketika session_id = 0, LSN saat ini adalah 0.
end_lsn nvarchar(23) Mengakhiri LSN untuk sesi.

NULL = sesi aktif.

Ketika session_id = 0, LSN akhir untuk sesi terakhir.
tran_count bigint Jumlah transaksi penangkapan data perubahan yang diproses. Penghitung ini diisi pada fase 2.

Ketika session_id = 0, jumlah transaksi yang diproses di semua sesi.
last_commit_lsn nvarchar(23) LSN dari rekaman log penerapan terakhir yang diproses.

Ketika session_id = 0, LSN rekaman log penerapan terakhir untuk sesi apa pun.
last_commit_time datetime Waktu rekaman log penerapan terakhir diproses.

Ketika session_id = 0, waktu terakhir menerapkan rekaman log untuk sesi apa pun.
log_record_count bigint Jumlah rekaman log yang dipindai.

Ketika session_id = 0, jumlah rekaman yang dipindai untuk semua sesi.
schema_change_count int Jumlah operasi bahasa definisi data (DDL) yang terdeteksi. Penghitung ini diisi pada fase 6.

Ketika session_id = 0, jumlah operasi DDL yang diproses di semua sesi.
command_count bigint Jumlah perintah yang diproses.

Ketika session_id = 0, jumlah perintah yang diproses di semua sesi.
first_begin_cdc_lsn nvarchar(23) LSN pertama yang berisi transaksi pengambilan data perubahan.

Ketika session_id = 0, LSN pertama yang berisi mengubah transaksi penangkapan data.
last_commit_cdc_lsn nvarchar(23) LSN dari rekaman log penerapan terakhir yang berisi transaksi pengambilan data perubahan.

Ketika session_id = 0, LSN rekaman log penerapan terakhir untuk sesi apa pun yang berisi transaksi penangkapan data perubahan
last_commit_cdc_time datetime Waktu rekaman log penerapan terakhir diproses yang berisi transaksi penangkapan data perubahan.

Ketika session_id = 0, waktu terakhir menerapkan rekaman log untuk sesi apa pun yang berisi perubahan transaksi pengambilan data.
Latency int Perbedaannya, dalam detik, antara end_time dan last_commit_cdc_time dalam sesi. Penghitung ini diisi pada akhir fase 7.

Ketika session_id = 0, nilai latensi nonzero terakhir yang direkam oleh sesi.
empty_scan_count int Jumlah sesi berturut-turut yang tidak berisi transaksi penangkapan data perubahan.
failed_sessions_count int Jumlah sesi yang gagal.

Keterangan

sys.dm_cdc_log_scan_sessions DMV berisi hingga 32 sesi pemindaian dan agregat semua sesi pemindaian dengan session_id= 0. Jadi, pada waktu tertentu, tampilan manajemen dinamis ini dapat berisi maksimal 33 baris.

Izin

Memerlukan izin TAMPILKAN STATUS DATABASE untuk mengkueri sys.dm_cdc_log_scan_sessions tampilan manajemen dinamis. Untuk informasi selengkapnya tentang izin pada tampilan manajemen dinamis, lihat Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL).

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin TAMPILKAN STATUS PERFORMA DATABASE pada database.

Contoh

Contoh berikut mengembalikan informasi untuk sesi terbaru.

USE AdventureWorks2022;  
GO  
SELECT session_id, start_time, end_time, duration, scan_phase,  
    error_count, start_lsn, current_lsn, end_lsn, tran_count,  
    last_commit_lsn, last_commit_time, log_record_count, schema_change_count,  
    command_count, first_begin_cdc_lsn, last_commit_cdc_lsn,   
    last_commit_cdc_time, latency, empty_scan_count, failed_sessions_count  
FROM sys.dm_cdc_log_scan_sessions  
WHERE session_id = (SELECT MAX(b.session_id) FROM sys.dm_cdc_log_scan_sessions AS b);  
GO  

Langkah berikutnya