Bagikan melalui


<sys.fn_all_changes_capture_instance> (T-SQL)

Berlaku untuk: SQL Server

Pembungkus untuk semua fungsi kueri perubahan . Skrip yang diperlukan untuk membuat fungsi-fungsi ini dihasilkan oleh prosedur tersimpan sys.sp_cdc_generate_wrapper_function . Untuk informasi selengkapnya tentang prosedur tersimpan yang digunakan untuk membuat sys.fn_all_changes_<capture_instance>, lihat sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Konvensi sintaks transact-SQL

Sintaks

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

Argumen

start_time

Nilai tanggalwaktu yang mewakili titik akhir rendah dari rentang entri tabel perubahan untuk disertakan dalam tataan hasil.

Hanya baris dalam cdc.<capture_instance>_CT tabel perubahan yang memiliki waktu penerapan terkait yang lebih besar dari start_time yang disertakan dalam tataan hasil.

Jika nilai NULL disediakan untuk argumen ini, titik akhir rendah rentang kueri akan sesuai dengan titik akhir rendah rentang yang valid untuk instans pengambilan.

Jika nilai salah satu @start_time atau @end_time parameter berada di luar waktu LSN terendah atau LSN tertinggi, maka eksekusi fungsi pembungkus yang dihasilkan 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.

end_time

Nilai tanggalwaktu yang mewakili titik akhir tinggi dari rentang entri tabel perubahan untuk disertakan dalam tataan hasil.

Parameter ini dapat mengambil salah satu dari dua kemungkinan makna tergantung pada nilai yang dipilih @closed_high_end_point ketika sys.sp_cdc_generate_wrapper_function dipanggil untuk menghasilkan skrip buat untuk fungsi pembungkus:

  • @closed_high_end_point = 1

    Hanya baris dalam cdc.<capture_instance>_CT tabel perubahan yang memiliki waktu penerapan terkait yang kurang dari atau sama dengan end_time yang disertakan dalam tataan hasil.

  • @closed_high_end_point = 0

    Hanya baris dalam cdc.capture_instance_CT tabel perubahan yang memiliki waktu penerapan terkait yang secara ketat kurang dari end_time yang disertakan dalam tataan hasil.

Jika nilai NULL disediakan untuk argumen ini, titik akhir tinggi rentang kueri akan sesuai dengan titik akhir tinggi dari rentang yang valid untuk instans pengambilan.

Jika nilai salah satu @start_time atau @end_time parameter berada di luar waktu LSN terendah atau LSN tertinggi, maka eksekusi fungsi pembungkus yang dihasilkan 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.

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

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

Bisa menjadi salah satu opsi berikut:

all
Mengembalikan semua perubahan dalam rentang LSN yang ditentukan. Untuk perubahan yang terjadi 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 yang terjadi karena operasi pembaruan, opsi ini mengembalikan dua baris yang berisi nilai kolom sebelum pembaruan dan setelah pembaruan.

Tabel Dikembalikan

Nama kolom Jenis kolom Deskripsi
__CDC_STARTLSN biner(10) Penerapan LSN transaksi yang terkait dengan perubahan. Semua perubahan yang dilakukan dalam transaksi yang sama berbagi LSN penerapan yang sama.
__CDC_SEQVAL biner(10) Nilai urutan yang digunakan untuk mengurutkan perubahan baris dalam transaksi.
<kolom dari @column_list> Bervariasi Kolom yang diidentifikasi dalam argumen sp_cdc_generate_wrapper_function column_list ketika dipanggil untuk menghasilkan skrip yang membuat fungsi pembungkus.
__CDC_OPERATION nvarchar(2) Kode operasi yang menunjukkan operasi yang diperlukan untuk menerapkan baris ke lingkungan target. Ini akan bervariasi berdasarkan nilai argumen row_filter_option disediakan dalam panggilan:

row_filter_option = 'semua'

'D' - operasi penghapusan

'I' - operasi sisipkan

'UN' - memperbarui nilai baru operasi

row_filter_option = 'semua perbarui lama'

'D' - operasi penghapusan

'I' - operasi sisipkan

'UN' - memperbarui nilai baru operasi

'UO' - memperbarui nilai lama operasi
<kolom dari @update_flag_list> bit Bendera bit dinamai dengan menambahkan _uflag ke nama kolom. Bendera selalu diatur ke NULL ketika __CDC_OPERATION adalah 'D', 'I', dari 'UO'. Saat __CDC_OPERATION adalah 'UN', itu diatur ke 1 jika pembaruan menghasilkan perubahan ke kolom yang sesuai. Jika tidak, 0.

Keterangan

Fungsi ini fn_all_changes_<capture_instance> berfungsi sebagai pembungkus untuk cdc.fn_cdc_get_all_changes_<capture_instance> fungsi kueri. Prosedur sys.sp_cdc_generate_wrapper tersimpan digunakan untuk menghasilkan skrip untuk membuat pembungkus.

Fungsi pembungkus tidak dibuat secara otomatis. Ada dua hal yang harus Anda lakukan untuk membuat fungsi pembungkus:

  1. Jalankan prosedur tersimpan untuk menghasilkan skrip untuk membuat pembungkus.

  2. Jalankan skrip untuk benar-benar membuat fungsi pembungkus.

Fungsi pembungkus memungkinkan pengguna untuk secara sistematis mengkueri perubahan yang terjadi dalam interval yang dibatasi oleh nilai tanggalwaktu alih-alih oleh nilai LSN. Fungsi pembungkus melakukan semua konversi yang diperlukan antara nilai tanggalwaktu yang disediakan dan nilai LSN yang diperlukan secara internal sebagai argumen ke fungsi kueri. Ketika fungsi pembungkus digunakan secara serial untuk memproses aliran data perubahan, mereka memastikan bahwa tidak ada data yang hilang atau diulang asalkan konvensi berikut diikuti: @end_time nilai interval yang terkait dengan satu panggilan disediakan sebagai @start_time nilai untuk interval yang terkait dengan panggilan berikutnya.

Dengan menggunakan @closed_high_end_point parameter saat membuat skrip, Anda dapat membuat pembungkus untuk mendukung batas atas tertutup atau batas atas terbuka pada jendela kueri yang ditentukan. Artinya, Anda dapat memutuskan apakah entri yang memiliki waktu penerapan sama dengan batas atas interval ekstraksi akan disertakan dalam interval. Secara default, batas atas disertakan.

Tataan hasil yang dikembalikan oleh semua fungsi pembungkus perubahan mengembalikan kolom __$start_lsn dan __$seqval tabel perubahan sebagai kolom __CDC_STARTLSN dan __CDC_SEQVAL. Ini mengikuti ini hanya dengan kolom terlacak yang muncul dalam parameter @column_list ketika pembungkus dihasilkan. Jika @column_list NULL, semua kolom sumber yang dilacak dikembalikan. Kolom sumber diikuti oleh kolom operasi, __CDC_OPERATION, yang merupakan kolom satu atau dua karakter yang mengidentifikasi operasi.

Bendera bit kemudian ditambahkan ke tataan hasil untuk setiap kolom yang diidentifikasi dalam @update_flag_list parameter . Untuk semua pembungkus perubahan, bendera bit akan selalu NULL jika __CDC_OPERATION adalah 'D', 'I', atau 'UO'. Jika __CDC_OPERATION adalah 'UN', bendera akan diatur ke 1 atau 0, tergantung pada apakah operasi pembaruan menyebabkan perubahan pada kolom.

Templat konfigurasi pengambilan data perubahan 'Membuat Instans CDC Wrapper TVFs untuk Skema' menunjukkan cara menggunakan sp_cdc_generate_wrapper_function prosedur tersimpan untuk mendapatkan skrip CREATE untuk semua fungsi pembungkus untuk fungsi kueri yang ditentukan skema. Templat kemudian membuat skrip tersebut. Untuk informasi selengkapnya tentang templat, lihat Penjelajah Templat.

Fungsi pembungkus sys.fn_all_changes_<capture_instance> dan sys.fn_net_changes_<capture_instance> tergantung pada fungsi cdc.fn_cdc_get_all_changes_<capture_instance> sistem dan cdc.fn_cdc_get_net_changes_<capture_instance>. 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.

Lihat Juga