<cdc.fn_cdc_get_all_changes_capture_instance> (T-SQL)

Berlaku untuk:SQL Server

Mengembalikan satu baris untuk setiap perubahan yang diterapkan ke tabel sumber dalam rentang nomor urutan log (LSN) yang ditentukan. Jika baris sumber memiliki beberapa perubahan selama interval, setiap perubahan diwakili dalam tataan hasil yang dikembalikan. Selain mengembalikan data perubahan, empat kolom metadata memberikan informasi yang Anda butuhkan untuk menerapkan perubahan ke sumber data lain. Opsi pemfilteran baris mengatur konten kolom metadata serta baris yang dikembalikan dalam tataan hasil. Ketika opsi filter baris 'semua' ditentukan, setiap perubahan memiliki tepat satu baris untuk mengidentifikasi perubahan. Saat opsi 'semua pembaruan lama' ditentukan, operasi pembaruan diwakili sebagai dua baris: satu berisi nilai kolom yang diambil sebelum pembaruan dan yang lain yang berisi nilai kolom yang diambil setelah pembaruan.

Fungsi enumerasi ini dibuat pada saat tabel sumber diaktifkan untuk mengubah pengambilan data. Nama fungsi diturunkan dan menggunakan format cdc.fn_cdc_get_all_changes_<capture_instance> di mana capture_instance adalah nilai yang ditentukan untuk instans pengambilan ketika tabel sumber diaktifkan untuk mengubah pengambilan data.

Konvensi sintaks transact-SQL

Sintaks

  
cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )  
  
<row_filter_option> ::=  
{ all  
 | all update old  
}  

Argumen

from_lsn

Nilai LSN yang mewakili titik akhir rendah rentang LSN untuk disertakan dalam tataan hasil. from_lsn adalah biner(10).

Hanya baris di cdc.[ capture_instance]_CT mengubah tabel dengan nilai dalam __$start_lsn lebih besar dari atau sama dengan from_lsn disertakan dalam tataan hasil.

to_lsn

Nilai LSN yang mewakili titik akhir tinggi rentang LSN untuk disertakan dalam tataan hasil. to_lsn adalah biner(10).

Hanya baris di cdc.[ capture_instance]_CT mengubah tabel dengan nilai dalam __$start_lsn lebih besar dari atau sama dengan from_lsn dan kurang dari atau sama dengan to_lsn disertakan dalam tataan hasil.

<> row_filter_option ::= { all | all update old }

Opsi yang mengatur konten kolom metadata serta baris yang dikembalikan dalam tataan hasil.

Bisa menjadi salah satu opsi berikut:

all
Mengembalikan semua perubahan dalam rentang LSN yang ditentukan. Untuk perubahan karena operasi pembaruan, opsi ini hanya mengembalikan baris yang berisi nilai baru setelah pembaruan diterapkan.

semua pembaruan lama
Mengembalikan semua perubahan dalam rentang LSN yang ditentukan. Untuk perubahan karena operasi pembaruan, opsi ini mengembalikan baris yang berisi nilai kolom sebelum pembaruan dan baris yang berisi nilai kolom setelah pembaruan.

Tabel dikembalikan

Nama kolom Jenis data Deskripsi
__$start_lsn biner(10) Terapkan LSN yang terkait dengan perubahan yang mempertahankan urutan penerapan perubahan. Perubahan yang dilakukan dalam transaksi yang sama berbagi nilai LSN penerapan yang sama.
__$seqval biner(10) Nilai urutan yang digunakan untuk mengurutkan perubahan pada baris dalam transaksi.
Operasi __$ int Mengidentifikasi operasi bahasa manipulasi data (DML) yang diperlukan untuk menerapkan baris data perubahan ke sumber data target. Bisa jadi salah satu dari yang berikut:

1 = hapus

2 = sisipkan

3 = pembaruan (nilai kolom yang diambil adalah yang sebelum operasi pembaruan). Nilai ini hanya berlaku ketika opsi filter baris 'semua pembaruan lama' ditentukan.

4 = pembaruan (nilai kolom yang diambil adalah nilai setelah operasi pembaruan)
__$update_mask varbinary(128) Masker bit dengan sedikit yang sesuai dengan setiap kolom yang ditangkap yang diidentifikasi untuk instans pengambilan. Nilai ini memiliki semua bit yang ditentukan yang diatur ke 1 ketika __$operation = 1 atau 2. Ketika __$operation = 3 atau 4, hanya bit yang sesuai dengan kolom yang diubah yang diatur ke 1.
<kolom tabel sumber yang diambil> Bervariasi Kolom yang tersisa yang dikembalikan oleh fungsi adalah kolom yang diambil yang diidentifikasi saat instans pengambilan dibuat. Jika tidak ada kolom yang ditentukan dalam daftar kolom yang diambil, semua kolom dalam tabel sumber dikembalikan.

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. Ketika pemanggil tidak memiliki izin untuk melihat data sumber, fungsi mengembalikan kesalahan 229 The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '\<DatabaseName>', schema 'cdc'.

Keterangan

Kolom gambar tipe data, teks, dan ntext selalu diberi nilai NULL saat __$operation = 1 atau __$operation = 3. Kolom jenis data varbinary(max), varchar(max), atau nvarchar(max) diberi nilai NULL ketika __$operation = 3 kecuali kolom berubah selama pembaruan. Ketika __$operation = 1, kolom ini diberi nilainya pada saat penghapusan. Kolom komputasi yang disertakan dalam instans pengambilan selalu memiliki nilai NULL.

Kesalahan 313 diharapkan jika rentang LSN yang disediakan tidak sesuai saat memanggil cdc.fn_cdc_get_all_changes_<capture_instance> atau cdc.fn_cdc_get_net_changes_<capture_instance>. lsn_value Jika parameter berada di luar waktu LSN terendah atau LSN tertinggi, maka eksekusi fungsi-fungsi ini akan kembali dalam kesalahan 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Kesalahan ini harus ditangani oleh pengembang. Sampel T-SQL untuk solusi dapat ditemukan di ReplTalk di GitHub.

Contoh

Beberapa templat SQL Server Management Studio tersedia yang menunjukkan cara menggunakan fungsi kueri penangkapan data perubahan. Templat ini tersedia di menu Tampilan di Management Studio. Untuk informasi selengkapnya, lihat Penjelajah Templat.

Contoh ini menunjukkan Enumerate All Changes for Valid Range Template. Ini menggunakan fungsi cdc.fn_cdc_get_all_changes_HR_Department untuk melaporkan semua perubahan yang saat ini tersedia untuk instans HR_Departmenttangkapan , yang didefinisikan untuk tabel sumber HumanResources.Department dalam AdventureWorks2022 database.

-- ========  
-- Enumerate All Changes for Valid Range Template  
-- ========  
USE AdventureWorks2022;  
GO  
  
DECLARE @from_lsn binary(10), @to_lsn binary(10);  
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');  
SET @to_lsn   = sys.fn_cdc_get_max_lsn();  
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department  
  (@from_lsn, @to_lsn, N'all');  
GO  

Lihat Juga