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 2016 (13.x) dan versi yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Saat Anda bekerja dengan tabel temporal, perhatikan pertimbangan dan keterbatasan berikut terkait sifat versi sistem:
Tabel temporal harus memiliki kunci utama yang didefinisikan, untuk mengkorelasikan catatan antara tabel saat ini dan tabel riwayat. Tabel riwayat tidak dapat memiliki kunci utama yang ditentukan.
Kolom periode
SYSTEM_TIMEyang digunakan untuk merekam nilaiValidFromdanValidToharus didefinisikan dengan jenis data datetime2.Sintaksis temporal berfungsi pada tabel atau tampilan yang disimpan secara lokal dalam database. Dengan objek jarak jauh seperti tabel di server tertaut, atau tabel eksternal, Anda tidak dapat menggunakan
FORklausa atau predikat periode secara langsung dalam kueri.Jika nama tabel riwayat ditentukan selama pembuatan tabel riwayat, Anda harus menentukan skema dan nama tabel.
Secara default, tabel riwayat dikompresi
PAGE.Jika tabel saat ini dipartisi, tabel riwayat dibuat pada grup file default karena konfigurasi partisi tidak direplikasi secara otomatis dari tabel saat ini ke tabel riwayat.
Tabel temporal dan riwayat tidak dapat menggunakan FileTable atau FILESTREAM. FileTable dan FILESTREAM memungkinkan manipulasi data di luar SQL Server, sehingga penerapan versi sistem tidak dapat dijamin.
Tabel simpul atau tabel tepi tidak dapat dibuat menjadi atau diubah menjadi tabel temporal.
Sementara tabel temporal mendukung jenis data blob, seperti (n)varchar(max), varbinary(max), (n)teks, dan gambar, mereka dikenakan biaya penyimpanan yang signifikan dan memiliki implikasi performa karena ukurannya. Saat Anda merancang sistem, berhati-hatilah saat menggunakan tipe data ini.
Tabel riwayat harus dibuat dalam database yang sama dengan tabel saat ini. Kueri temporal melalui server tertaut tidak didukung.
Tabel riwayat tidak boleh memiliki batasan (kunci primer, kunci asing, tabel, atau batasan kolom).
Tampilan terindeks tidak didukung di atas kueri temporal (kueri yang menggunakan
FOR SYSTEM_TIMEklausa).Opsi online (
WITH (ONLINE = ON) tidak berpengaruh dalamALTER TABLE ALTER COLUMNtabel temporal versi sistem. kolomALTERtidak dilakukan secara online, apa pun nilai yang ditetapkan untuk opsiONLINE.Pernyataan
INSERTdanUPDATEtidak dapat mereferensikan kolom periodeSYSTEM_TIME. Upaya untuk menyisipkan nilai langsung ke dalam kolom ini diblokir.TRUNCATE TABLEtidak didukung saatSYSTEM_VERSIONINGadalahON.Modifikasi langsung data dalam tabel riwayat tidak diizinkan.
Untuk menghindari logika bahasa manipulasi data (DML) menjadi tidak valid, pemicu
INSTEAD OFtidak diizinkan baik di tabel saat ini maupun di tabel riwayat.AFTERpemicu hanya diizinkan pada tabel saat ini. Pemicu ini diblokir pada tabel riwayat untuk menghindari pembatalan logika DML.Penggunaan teknologi replikasi terbatas:
Kelompok ketersediaan: Didukung sepenuhnya
Penangkapan data perubahan dan pelacakan perubahan: Hanya didukung pada tabel saat ini
Replikasi rekam jepret dan transaksional: Hanya didukung untuk satu publisher tanpa temporal diaktifkan, dan satu subscriber dengan temporal diaktifkan. Penggunaan beberapa pelanggan tidak didukung karena dependensi pada jam sistem lokal, yang dapat menyebabkan data temporal yang tidak konsisten. Dalam kasus ini, publisher digunakan untuk beban kerja pemrosesan transaksi online (OLTP), sementara subscriber berfungsi untuk mengalihkan beban pelaporan (termasuk kueri
AS OF). Ketika agen distribusi dijalankan, transaksi dibuka dan tetap terbuka hingga agen distribusi berhenti.ValidFromdanValidTodiisi dengan waktu mulai transaksi pertama yang dimulai oleh agen distribusi. Mungkin lebih baik menjalankan agen distribusi sesuai jadwal alih-alih menggunakan perilaku default yang menjalankannya secara terus-menerus, jika bagi aplikasi atau organisasi Anda penting agarValidFromdanValidToterisi dengan waktu yang mendekati waktu sistem saat ini. Untuk informasi selengkapnya, lihat Skenario penggunaan tabel Temporal.Replikasi gabungan: Tidak didukung untuk tabel temporal
Kueri reguler hanya memengaruhi data dalam tabel saat ini. Untuk mengkueri data dalam tabel riwayat, Anda harus menggunakan kueri temporal. Untuk informasi selengkapnya, lihat Mengkueri data dalam tabel temporal versi sistem.
Strategi pengindeksan yang optimal mencakup indeks columnstore berkluster atau indeks rowstore B-tree pada tabel saat ini, serta indeks columnstore berkluster pada tabel riwayat, guna mengoptimalkan ukuran penyimpanan dan performa. Jika Anda membuat atau menggunakan tabel riwayat sendiri, buatlah jenis indeks ini yang terdiri dari kolom periode yang dimulai dengan kolom akhir periode. Indeks ini mempercepat kueri temporal dan kueri yang merupakan bagian dari pemeriksaan konsistensi data. Tabel riwayat default membuat indeks rowstore yang dikelompokkan berdasarkan kolom periode (akhir, mulai). Setidaknya, gunakan indeks rowstore yang tidak berklaster.
Objek/properti berikut ini tidak direplikasi dari tabel saat ini ke riwayat saat tabel riwayat dibuat:
- Definisi periode
- Definisi identitas
- Indexes
- Statistics
- Periksa batasan
- Pemicu
- Konfigurasi pemartisian
- Permissions
- Predikat keamanan tingkat baris
Anda tidak dapat mengonfigurasi tabel riwayat sebagai tabel saat ini dalam rantai tabel riwayat.
Note
Dokumentasi biasanya menggunakan istilah pohon B ketika merujuk pada indeks. Dalam indeks rowstore, Mesin Database mengimplementasikan pohon B+. Ini tidak berlaku untuk indeks penyimpan kolom atau indeks pada tabel yang dioptimalkan memori. Untuk informasi selengkapnya, lihat panduan arsitektur dan desain indeks SQL Server dan Azure SQL.
Konten terkait
- tabel temporal
- Mulai menggunakan tabel temporal versi sistem
- Pemeriksaan konsistensi pada sistem tabel temporal
- Mempartisi dengan tabel temporal
- Keamanan tabel temporal
- Mengelola retensi data historis dalam tabel temporal versi sistem
- Tabel temporal versi sistem dengan tabel memori yang dioptimalkan
- Tampilan dan fungsi metadata tabel temporal