Bagikan melalui


CDC.<>capture_instance_CT (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Tabel perubahan yang dibuat saat mengubah pengambilan data diaktifkan pada tabel sumber. Tabel mengembalikan satu baris untuk setiap operasi sisipkan dan hapus yang dilakukan terhadap tabel sumber, dan dua baris untuk setiap operasi pembaruan yang dilakukan terhadap tabel sumber. Saat nama tabel perubahan tidak ditentukan pada saat tabel sumber diaktifkan, nama tersebut diturunkan. Format nama adalah cdc.capture_instance_CT di mana capture_instance adalah nama skema tabel sumber dan nama tabel sumber dalam format schema_table. Misalnya, jika tabel Person.Address dalam database sampel AdventureWorks diaktifkan untuk mengubah pengambilan data, nama tabel perubahan turunan akan cdc.Person_Address_CT.

Kami menyarankan agar Anda tidak mengkueri tabel sistem secara langsung. Sebagai gantinya, jalankan fungsi cdc.fn_cdc_get_all_changes_<capture_instance> dan cdc.fn_cdc_get_net_changes_<capture_instance>.

Nama kolom Jenis data Deskripsi
__$start_lsn biner(10) Nomor urutan log (LSN) yang terkait dengan transaksi penerapan untuk perubahan tersebut.

Semua perubahan yang dilakukan dalam transaksi yang sama berbagi LSN penerapan yang sama. Misalnya, jika operasi penghapusan pada tabel sumber menghapus dua baris, tabel perubahan berisi dua baris, masing-masing dengan nilai __$start_lsn yang sama.
__$end_lsn biner(10) Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.

Di SQL Server 2012 (11.x), kolom ini selalu NULL.
__$seqval biner(10) Urutan operasi seperti yang diwakili dalam log transaksi. Tidak boleh digunakan untuk memesan. Sebagai gantinya , gunakan kolom __$command_id .
Operasi __$ int Mengidentifikasi operasi bahasa manipulasi data (DML) yang terkait dengan perubahan. Bisa jadi salah satu dari yang berikut:

1 = hapus

2 = sisipkan

3 = pembaruan (nilai lama)

Data kolom memiliki nilai baris sebelum menjalankan pernyataan pembaruan.

4 = pembaruan (nilai baru)

Data kolom memiliki nilai baris setelah menjalankan pernyataan pembaruan.
__$update_mask varbinary(128) Masker bit berdasarkan ordinal kolom tabel perubahan yang mengidentifikasi kolom yang berubah.
<kolom tabel sumber yang diambil> Bervariasi Kolom yang tersisa dalam tabel perubahan adalah kolom dari tabel sumber yang diidentifikasi sebagai kolom yang diambil saat instans pengambilan dibuat. Jika tidak ada kolom yang ditentukan dalam daftar kolom yang diambil, semua kolom dalam tabel sumber disertakan dalam tabel ini.
__$command_id int Melacak urutan operasi dalam transaksi.

Keterangan

Kolom __$command_id diperkenalkan dalam pembaruan kumulatif dalam versi 2012 hingga 2016. Untuk informasi versi dan unduhan, lihat artikel KB 3030352 di FIX: Tabel perubahan diurutkan dengan salah untuk baris yang diperbarui setelah Anda mengaktifkan perubahan pengambilan data untuk database Microsoft SQL Server. Untuk informasi selengkapnya, lihat Fungsionalitas CDC dapat putus setelah meningkatkan ke CU terbaru untuk SQL Server 2012, 2014, dan 2016.

Jenis Data Kolom yang Diambil

Kolom yang diambil yang disertakan dalam tabel ini memiliki tipe data dan nilai yang sama dengan kolom sumber terkait dengan pengecualian berikut:

  • Kolom tanda waktu didefinisikan sebagai biner(8).

  • Kolom identitas didefinisikan sebagai int atau bigint.

Namun, nilai dalam kolom ini sama dengan nilai kolom sumber.

Tipe Data Objek Besar

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.

Secara default, ukuran maksimum yang dapat ditambahkan ke kolom yang diambil dalam satu pernyataan INSERT, UPDATE, WRITETEXT, atau UPDATETEXT adalah 65.536 byte atau 64 KB. Untuk meningkatkan ukuran ini guna mendukung data LOB yang lebih besar, gunakan Opsi Konfigurasi Konfigurasi Server ukuran repl teks maksimum untuk menentukan ukuran maksimum yang lebih besar. Untuk informasi selengkapnya, lihat Mengonfigurasi ukuran repl teks maksimum Opsi Konfigurasi Server.

Modifikasi Bahasa Definisi Data

Modifikasi DDL pada tabel sumber, seperti menambahkan atau menghilangkan kolom, direkam dalam tabel cdc.ddl_history . Perubahan ini tidak diterapkan ke tabel perubahan. Artinya, definisi tabel perubahan tetap konstan. Saat menyisipkan baris ke dalam tabel perubahan, proses pengambilan mengabaikan kolom yang tidak muncul di daftar kolom yang diambil yang terkait dengan tabel sumber. Jika kolom muncul di daftar kolom yang diambil yang tidak lagi berada dalam tabel sumber, kolom diberi nilai null.

Mengubah tipe data kolom dalam tabel sumber juga direkam dalam tabel cdc.ddl_history . Namun, perubahan ini mengubah definisi tabel perubahan. Jenis data kolom yang diambil dalam tabel perubahan dimodifikasi saat proses pengambilan menemukan rekaman log untuk perubahan DDL yang dilakukan pada tabel sumber.

Jika Anda perlu mengubah jenis data kolom yang diambil dalam tabel sumber dengan cara yang mengurangi ukuran tipe data, gunakan prosedur berikut untuk memastikan bahwa kolom yang setara dalam tabel perubahan dapat berhasil dimodifikasi.

  1. Dalam tabel sumber, perbarui nilai dalam kolom yang akan dimodifikasi agar pas dengan ukuran jenis data yang direncanakan. Misalnya, jika Anda mengubah jenis data dari int ke smallint, perbarui nilai ke ukuran yang pas dalam rentang smallint, -32.768 menjadi 32.767.

  2. Dalam tabel perubahan, lakukan operasi pembaruan yang sama ke kolom yang setara.

  3. Ubah tabel sumber dengan menentukan jenis data baru. Perubahan tipe data berhasil disebarluaskan ke tabel perubahan.

Modifikasi Bahasa Manipulasi Data

Saat operasi sisipkan, perbarui, dan hapus dilakukan pada tabel sumber yang diaktifkan tangkapan data perubahan, rekaman operasi DML tersebut muncul di log transaksi database. Proses pengambilan data perubahan mengambil informasi tentang perubahan tersebut dari log transaksi, dan menambahkan satu atau dua baris ke tabel perubahan untuk merekam perubahan. Entri ditambahkan ke tabel perubahan dalam urutan yang sama dengan yang diterapkan ke tabel sumber. Meskipun demikian, penerapan entri tabel perubahan biasanya harus dilakukan pada sekelompok perubahan daripada dilakukan per setiap entri.

Operasi sisipkan menghasilkan satu baris yang ditambahkan ke tabel perubahan; operasi penghapusan menghasilkan satu baris yang ditambahkan ke tabel perubahan; jika SQL Server menerapkan pembaruan sebagai "pembaruan yang ditangguhkan", yang berarti sebagai sepasang operasi hapus dan sisipkan, operasi pembaruan menghasilkan dua baris yang ditambahkan ke tabel perubahan: baris pertama yang mencerminkan penghapusan data yang diambil, dan baris kedua yang mencerminkan penyisipan data yang diperbarui dan diambil; jika SQL Server tidak menerapkan pembaruan sebagai "pembaruan yang ditangguhkan", operasi pembaruan menghasilkan dua baris yang ditambahkan ke tabel perubahan: baris pertama yang mencerminkan data yang diambil sebelum pembaruan, dan baris kedua yang mencerminkan data yang diambil setelah pembaruan.

Dalam entri ubah tabel, kolom __$start_lsn digunakan untuk merekam penerapan LSN yang terkait dengan perubahan ke tabel sumber, kolom __$command_id digunakan untuk mengurutkan perubahan dalam transaksinya, dan kolom operasi __$digunakan untuk merekam operasi yang dilakukan. Bersama-sama, kolom metadata ini dapat digunakan untuk memastikan bahwa urutan penerapan perubahan sumber dipertahankan. Karena proses pengambilan mendapatkan informasi perubahannya dari log transaksi, penting untuk dicatat bahwa mengubah entri tabel tidak muncul secara sinkron dengan perubahan tabel sumber yang sesuai. Sebaliknya, perubahan yang sesuai muncul secara asinkron, setelah proses pengambilan memproses entri perubahan yang relevan dari log transaksi.

Untuk operasi sisipkan dan hapus, semua bit dalam masker pembaruan diatur. Untuk operasi pembaruan, mask pembaruan di pembaruan lama dan memperbarui baris baru akan dimodifikasi untuk mencerminkan kolom yang berubah selama pembaruan.

Lihat Juga

sys.sp_cdc_enable_table (T-SQL)
sys.sp_cdc_get_ddl_history (T-SQL)