sys.fn_cdc_get_min_lsn (T-SQL)
Berlaku untuk: SQL Server
Mengembalikan nilai kolom start_lsn untuk instans pengambilan yang ditentukan dari tabel sistem cdc.change_tables . Nilai ini menunjukkan titik akhir rendah interval validitas untuk instans pengambilan.
Sintaks
sys.fn_cdc_get_min_lsn ( 'capture_instance_name' )
Argumen
' capture_instance_name '
Adalah nama instans pengambilan. capture_instance_name adalah sysname.
Jenis Kembalian
biner(10)
Keterangan
Mengembalikan 0x00000000000000000000 ketika instans pengambilan tidak ada atau ketika pemanggil tidak berwenang untuk mengakses data perubahan yang terkait dengan instans pengambilan.
Fungsi ini biasanya digunakan untuk mengidentifikasi titik akhir rendah dari garis waktu pengambilan data perubahan yang terkait dengan instans tangkapan. Anda juga dapat menggunakan fungsi ini untuk memvalidasi bahwa titik akhir rentang kueri berada dalam garis waktu instans pengambilan sebelum meminta perubahan data. Penting untuk melakukan pemeriksaan tersebut karena titik akhir rendah instans tangkapan berubah saat pembersihan dilakukan pada tabel perubahan. Jika waktu antara permintaan untuk data perubahan signifikan, bahkan titik akhir rendah yang diatur ke titik akhir tinggi dari permintaan data perubahan sebelumnya mungkin berada di luar garis waktu saat ini.
Izin
Memerlukan keanggotaan dalam peran server tetap sysadmin atau peran database tetap db_owner. Untuk semua pengguna lain, memerlukan izin SELECT pada semua kolom yang diambil dalam tabel sumber dan, jika peran pembatasan untuk instans pengambilan ditentukan, keanggotaan dalam peran database tersebut.
Contoh
J. Mengembalikan nilai LSN minimum untuk instans pengambilan tertentu
Contoh berikut mengembalikan nilai LSN minimum untuk instans HumanResources_Employee
pengambilan dalam database AdventureWorks2022.
USE AdventureWorks2-12;
GO
SELECT sys.fn_cdc_get_min_lsn ('HumanResources_Employee')AS min_lsn;
B. Memverifikasi titik akhir rendah rentang kueri
Contoh berikut menggunakan nilai LSN minimum yang dikembalikan oleh sys.fn_cdc_get_min_lsn
untuk memverifikasi bahwa titik akhir rendah yang diusulkan untuk kueri data perubahan valid untuk garis waktu saat ini untuk instans HumanResources_Employee
pengambilan . Contoh ini mengasumsikan bahwa LSN titik akhir tinggi sebelumnya untuk instans tangkapan disimpan dan tersedia untuk mengatur @save_to_lsn
variabel. Untuk tujuan contoh ini, @save_to_lsn
diatur ke 0x000000000000000000 untuk memaksa bagian penanganan kesalahan dijalankan.
USE AdventureWorks2022;
GO
DECLARE @min_lsn binary(10), @from_lsn binary(10),@save_to_lsn binary(10), @to_lsn binary(10);
-- Sets @save_to_lsn to the previous high endpoint saved from the last change data request.
SET @save_to_lsn = 0x000000000000000000;
-- Sets the upper endpoint for the query range to the current maximum LSN.
SET @to_lsn = sys.fn_cdc_get_max_lsn();
-- Sets the @min_lsn parameter to the current minimum LSN for the capture instance.
SET @min_lsn = sys.fn_cdc_get_min_lsn ('HumanResources_Employee');
-- Sets the low endpoint for the query range to the LSN that follows the previous high endpoint.
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);
-- Tests to verify the low endpoint is valid for the current capture instance.
IF (@from_lsn < @min_lsn)
BEGIN
RAISERROR('Low endpoint of the request interval is invalid.', 16, -1);
END
ELSE
-- Return the changes occurring within the query range.
SELECT * FROM cdc.fn_cdc_get_all_changes_HumanResources_Employee(@from_lsn, @to_lsn, 'all');
GO