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