Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Artikel ini menjelaskan cara mengelola pelacakan perubahan. Ini juga menjelaskan cara mengonfigurasi keamanan dan menentukan efek pada penyimpanan dan performa saat pelacakan perubahan digunakan.
Mengelola Pelacakan Perubahan
Bagian berikut mencantumkan tampilan katalog, izin, dan pengaturan yang relevan untuk mengelola pelacakan perubahan.
Tampilan Katalog
Untuk menentukan tabel dan database mana yang mengaktifkan pelacakan perubahan, gunakan tampilan katalog berikut:
Selain itu , tampilan katalog sys.internal_tables mencantumkan tabel internal yang dibuat saat pelacakan perubahan diaktifkan untuk tabel pengguna.
Keamanan
Untuk mengakses informasi pelacakan perubahan dengan menggunakan fungsi pelacakan perubahan, prinsipal harus memiliki izin berikut:
SELECTizin setidaknya pada kolom kunci utama pada tabel yang dilacak perubahan ke tabel yang sedang dikueri.VIEW CHANGE TRACKINGizin akses pada tabel yang perubahannya sedang diambil. IzinVIEW CHANGE TRACKINGdiperlukan karena alasan berikut:Rekaman pelacakan perubahan menyertakan informasi tentang baris yang dihapus. Catatan menggunakan nilai kunci utama dari baris yang dihapus. Perwakilan mungkin diberikan
SELECTizin untuk tabel terlacak perubahan setelah beberapa data sensitif dihapus. Dalam hal ini, Anda tidak ingin prinsipal tersebut mengakses informasi yang dihapus dengan menggunakan pelacakan perubahan.Informasi pelacakan perubahan dapat menyimpan informasi tentang kolom mana yang diubah oleh operasi pembaruan. Prinsipal mungkin ditolak izin ke kolom yang berisi informasi sensitif. Namun, karena informasi pelacakan perubahan tersedia, prinsipal dapat menentukan bahwa nilai kolom diperbarui, tetapi prinsipal tidak dapat menentukan nilai kolom.
Pahami overhead pelacakan perubahan
Saat Anda mengaktifkan pelacakan perubahan untuk tabel, itu memengaruhi beberapa operasi administrasi. Tabel berikut mencantumkan operasi dan efek yang harus Anda pertimbangkan.
| Operasi | Saat pelacakan perubahan diaktifkan |
|---|---|
DROP TABLE |
Semua informasi pelacakan perubahan untuk tabel yang dihilangkan dihapus. |
ALTER TABLE DROP CONSTRAINT |
Upaya untuk menghilangkan batasan PRIMARY KEY gagal. Anda harus menonaktifkan pelacakan perubahan sebelum dapat menghilangkan PRIMARY KEY batasan. |
ALTER TABLE DROP COLUMN |
Jika kolom yang Anda hapus merupakan bagian dari kunci utama, kolom tersebut tidak dapat dihapus, terlepas dari pelacakan perubahan. Jika kolom yang Anda hapus bukan bagian dari kunci primer, penghapusan kolom akan berhasil. Namun, Anda harus terlebih dahulu memahami efek pada aplikasi apa pun yang menyinkronkan data ini. Jika pelacakan perubahan kolom diaktifkan untuk tabel, kolom yang dihilangkan mungkin masih dikembalikan sebagai bagian dari informasi pelacakan perubahan. Aplikasi bertanggung jawab untuk menangani kolom yang dihapus. |
ALTER TABLE ADD COLUMN |
Jika Anda menambahkan kolom baru ke tabel terlacak perubahan, penambahan kolom tidak dilacak. Hanya pembaruan dan perubahan yang dilakukan pada kolom baru yang dilacak. |
ALTER TABLE ALTER COLUMN |
Perubahan jenis data kolom kunci non-primer tidak dilacak. |
ALTER TABLE SWITCH |
Mengalihkan partisi gagal jika satu atau kedua tabel mengaktifkan pelacakan perubahan. |
DROP INDEX, or ALTER INDEX DISABLE |
Indeks yang memberlakukan kunci utama tidak dapat dihilangkan atau dinonaktifkan. |
TRUNCATE TABLE |
Anda dapat memotong tabel yang mengaktifkan pelacakan perubahan. Namun, baris yang dihapus oleh operasi tersebut tidak dilacak, dan versi minimum yang valid diperbarui. Ketika aplikasi memeriksa versinya, pemeriksaan menunjukkan bahwa versi terlalu lama dan diperlukan reinisialisasi. Kondisi ini sama dengan pelacakan perubahan yang dinonaktifkan, lalu diaktifkan kembali untuk tabel. |
Penggunaan pelacakan perubahan menambahkan beban tambahan pada operasi DML karena operasi tersebut menyimpan informasi pelacakan perubahan.
Efek pada DML
Pelacakan perubahan dioptimalkan untuk meminimalkan overhead performa pada operasi DML. Tambahan beban kinerja yang timbul saat menggunakan pelacakan perubahan pada sebuah tabel serupa dengan overhead yang terjadi saat Anda membuat dan memelihara indeks untuk tabel tersebut.
Untuk setiap baris yang diubah operasi DML, sistem menambahkan baris ke tabel pelacakan perubahan internal. Efek dari tindakan ini, relatif terhadap operasi DML, tergantung pada berbagai faktor, seperti:
Jumlah kolom kunci primer
Jumlah data yang diubah di baris tabel pengguna
Jumlah operasi yang dilakukan dalam transaksi
Isolasi rekam jepret, jika digunakan, juga memengaruhi performa untuk semua operasi DML, baik pelacakan perubahan diaktifkan atau tidak.
Efek pada penyimpanan
Data pelacakan perubahan disimpan dalam jenis tabel internal berikut:
Tabel perubahan internal
Setiap tabel pengguna yang mengaktifkan pelacakan perubahan mendapatkan tabel perubahan internalnya sendiri.
Tabel transaksi internal
Database memiliki satu tabel transaksi internal.
Tabel internal ini memengaruhi persyaratan penyimpanan dengan cara berikut:
Untuk setiap perubahan pada setiap baris dalam tabel pengguna, pelacakan perubahan menambahkan baris ke tabel perubahan internal. Baris ini memiliki overhead tetap yang kecil ditambah overhead variabel sebesar ukuran kolom kunci utama. Baris dapat berisi informasi konteks opsional yang ditetapkan oleh aplikasi. Jika Anda mengaktifkan pelacakan kolom, setiap kolom yang diubah memerlukan 4 byte dalam tabel pelacakan.
Untuk setiap transaksi yang dilakukan, pelacakan perubahan menambahkan baris ke tabel transaksi internal.
Seperti halnya tabel internal lainnya, Anda dapat menentukan ruang yang digunakan untuk tabel pelacakan perubahan dengan menggunakan prosedur tersimpan sp_spaceused . Anda bisa mendapatkan nama tabel internal dengan menggunakan tampilan katalog sys.internal_tables , seperti yang diperlihatkan dalam contoh berikut.
sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'
Konten terkait
- Melacak perubahan data (SQL Server)
- ALTER TABLE (Transact-SQL)
- Properti Basis Data (Halaman ChangeTracking)
- ALTER DATABASE SET options (Transact-SQL)
- sys.change_tracking_databases (T-SQL)
- sys.change_tracking_tables (Transact-SQL)
- Tentang Pelacakan Perubahan (SQL Server)
- Bekerja dengan Data Perubahan