Menghentikan penerapan versi sistem pada tabel temporal versi sistem
Berlaku untuk: SQL Server 2016 (13.x) dan database Azure SQL yang lebih baru Azure SQL Managed Instance
Anda mungkin ingin menghentikan penerapan versi pada tabel temporal Anda baik untuk sementara atau permanen. Anda dapat melakukannya dengan mengatur klausa SYSTEM_VERSIONING ke NONAKTIF.
Pengaturan 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 yang penting
- Tabel Riwayat berhenti menangkap pembaruan selama SYSTEM_VERSIONING = NONAKTIF.
- Tidak ada kehilangan data yang terjadi pada tabel temporal saat Anda mengatur SYSTEM_VERSIONING = NONAKTIF atau menghilangkan periode SYSTEM_TIME .
- Saat Anda mengatur SYSTEM_VERSIONING = OFF dan tidak menghapus drop periode SYSTEM_TIME , sistem terus memperbarui kolom periode untuk setiap operasi sisipkan dan perbarui. Penghapusan pada tabel saat ini bersifat permanen.
- Hilangkan periode SYSTEM_TIME untuk menghapus kolom titik.
- Saat Anda mengatur, SYSTEM_VERSIONING = NONAKTIF, 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 jika 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 = NONAKTIF.
Menghapus SYSTEM_VERSIONING secara permanen
Contoh ini secara permanen menghapus SYSTEM_VERSIONING dan menghapus kolom periode. 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;
Menghapus sementara SYSTEM_VERSIONING
Ini adalah daftar operasi yang mengharuskan penerapan versi sistem diatur ke NONAKTIF:
- Menghapus data yang tidak perlu dari riwayat (DELETE atau TRUNCATE)
- Menghapus data dari tabel saat ini tanpa penerapan versi (DELETE, TRUNCATE)
- SWITCH OUT partisi dari tabel saat ini
- Partisi SWITCH IN ke dalam tabel riwayat
Contoh ini menghentikan sementara SYSTEM_VERSIONING untuk memungkinkan Anda melakukan operasi pemeliharaan tertentu. Jika Anda berhenti membuat versi sementara sebagai prasyarat untuk pemeliharaan tabel, sebaiknya lakukan ini di dalam transaksi untuk menjaga konsistensi data.
Catatan
Saat mengaktifkan kembali penerapan versi sistem, jangan lupa untuk menentukan argumen HISTORY_TABLE. Gagal melakukannya menghasilkan tabel riwayat baru yang dibuat dan dikaitkan dengan tabel saat ini. Tabel riwayat asli masih bisa ada sebagai tabel normal tetapi tidak akan dikaitkan dengan tabel saat ini.
BEGIN TRAN
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 ;
Langkah berikutnya
- Tabel Temporal
- Mulai menggunakan Tabel Temporal System-Versioned
- Mengelola Retensi Data Historis dalam Tabel Temporal System-Versioned
- Tabel Temporal Versi Sistem dengan Tabel Memory-Optimized
- Membuat Tabel Temporal System-Versioned
- Memodifikasi Data dalam Tabel Temporal System-Versioned
- Mengkueri Data dalam Tabel Temporal System-Versioned
- Mengubah Skema Tabel Temporal System-Versioned
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk