Menghentikan penerapan versi sistem pada tabel temporal versi sistem
Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Database Azure SQL Managed Instance yang lebih baru
Anda mungkin ingin berhenti membuat versi pada tabel temporal Anda baik untuk sementara atau permanen. Anda dapat melakukannya dengan mengatur SYSTEM_VERSIONING
klausul ke OFF
.
Atur SYSTEM_VERSIONING = NONAKTIF
Hentikan penerapan versi sistem jika Anda ingin melakukan operasi pemeliharaan tertentu pada tabel temporal atau tidak memerlukan tabel versi lagi. Karena operasi ini, Anda mendapatkan dua tabel independen:
- Tabel saat ini dengan definisi titik
- Tabel riwayat sebagai tabel biasa
Keterangan
Tabel riwayat berhenti mengambil pembaruan selama SYSTEM_VERSIONING = OFF
.
Tidak ada kehilangan data yang terjadi pada tabel temporal saat Anda mengatur SYSTEM_VERSIONING = OFF
atau menghilangkan SYSTEM_TIME
periode.
Saat Anda mengatur SYSTEM_VERSIONING = OFF
dan tidak menghapus penurunan SYSTEM_TIME
periode, sistem terus memperbarui kolom periode untuk setiap operasi sisipkan dan perbarui. Penghapusan pada tabel saat ini bersifat permanen.
Anda harus menghilangkan SYSTEM_TIME
periode untuk menghapus kolom titik. Untuk menghapus kolom periode, gunakan ALTER TABLE <table> DROP <column>;
. Untuk informasi selengkapnya, lihat Mengubah skema tabel temporal versi sistem.
Saat Anda mengatur SYSTEM_VERSIONING = OFF
, semua pengguna dengan izin yang memadai dapat mengubah skema dan konten tabel riwayat, atau bahkan menghapus tabel riwayat secara permanen.
Anda tidak dapat mengatur SYSTEM_VERSIONING = OFF
apakah Anda memiliki objek lain yang dibuat dengan SCHEMABINDING
menggunakan ekstensi kueri temporal, seperti mereferensikan SYSTEM_TIME
. Pembatasan ini mencegah objek ini gagal jika Anda mengatur SYSTEM_VERSIONING = OFF
.
Menghapus SYSTEM_VERSIONING secara permanen
Contoh ini menghapus SYSTEM_VERSIONING
dan menghapus kolom titik secara permanen. Menghapus kolom periode bersifat opsional.
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
-- Optionally, DROP PERIOD if you want to revert temporal table to a non-temporal
ALTER TABLE dbo.Department
DROP PERIOD FOR SYSTEM_TIME;
Hapus sementara SYSTEM_VERSIONING
Daftar berikut berisi daftar operasi yang mengharuskan penerapan versi sistem diatur ke OFF
:
- Menghapus data yang tidak perlu dari riwayat (
DELETE
atauTRUNCATE
) - Menghapus data dari tabel saat ini tanpa penerapan versi (
DELETE
,TRUNCATE
) - Partisi
SWITCH OUT
dari tabel saat ini - Partisi
SWITCH IN
ke dalam tabel riwayat
Contoh ini untuk sementara berhenti SYSTEM_VERSIONING
untuk memungkinkan Anda melakukan operasi pemeliharaan tertentu. Jika Anda berhenti membuat versi sementara sebagai prasyarat untuk pemeliharaan tabel, sebaiknya lakukan perubahan ini di dalam transaksi untuk menjaga konsistensi data.
Saat mengaktifkan kembali penerapan versi sistem, jangan lupa untuk menentukan HISTORY_TABLE
argumen. Gagal melakukannya menghasilkan tabel riwayat baru yang dibuat dan dikaitkan dengan tabel saat ini. Tabel riwayat asli masih bisa ada sebagai tabel normal, tidak lagi terkait dengan tabel saat ini.
BEGIN TRANSACTION;
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = OFF);
TRUNCATE TABLE [History].[DepartmentHistory]
WITH (PARTITIONS(1, 2));
ALTER TABLE dbo.Department
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.DepartmentHistory));
COMMIT;
Konten terkait
- Tabel temporal
- Mulai menggunakan tabel temporal versi sistem
- Mengelola retensi data historis dalam tabel temporal versi sistem
- Tabel temporal versi sistem dengan tabel memori yang dioptimalkan
- Membuat tabel temporal versi sistem
- Mengubah data dalam tabel temporal versi sistem
- Mengkueri data dalam tabel temporal versi sistem
- Mengubah skema tabel temporal versi sistem