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 2022 (16.x) dan versi
yang lebih baru Azure SQL Database
Azure SQL Managed Instance
Ada beberapa pertimbangan dan batasan yang perlu diperhatikan saat bekerja dengan tabel ledger karena sifat penerapan versi sistem dan data yang tidak dapat diubah.
Pertimbangan dan batasan umum
Pertimbangkan hal berikut saat bekerja dengan ledger.
- Database ledger, database dengan properti ledger yang diaktifkan, tidak dapat dikonversi ke database biasa, dengan properti ledger yang dinonaktifkan.
- Pembuatan otomatis dan penyimpanan ringkasan database tersedia di Azure SQL Database dan SQL Server 2022. Di SQL Server, Anda dapat mengonfigurasi penyimpanan ringkasan otomatis menggunakan
ALTER DATABASE SCOPED CONFIGURATION. Untuk informasi selengkapnya, lihat Mengaktifkan penyimpanan ikhtisar otomatis. - Manajemen ringkasan otomatis dengan tabel buku besar dengan menggunakan blob immutable Azure Storage tidak menawarkan kemampuan bagi pengguna untuk menggunakan akun penyimpanan redundan lokal (LRS).
- Saat database ledger dibuat, semua tabel baru yang dibuat secara default (tanpa menentukan
APPEND_ONLY = ONklausul) dalam database adalah tabel ledger yang dapat diperbarui. Untuk membuat tabel buku besar hanya-tambah, gunakan klausaAPPEND_ONLY = ONdalam pernyataan CREATE TABLE (Transact-SQL). - Transaksi dapat memperbarui hingga 200 tabel ledger.
Pertimbangan dan Keterbatasan Tabel Ledger
- Tabel yang sudah ada dalam database yang bukan tabel ledger tidak dapat dikonversi ke tabel ledger. Untuk informasi selengkapnya, lihat Migrasikan data dari tabel reguler ke tabel buku besar.
- Setelah tabel ledger dibuat, tabel tidak dapat dikembalikan ke tabel yang bukan merupakan tabel ledger.
- Menghapus data yang lebih lama dalam tabel ledger khusus tambahan, atau tabel riwayat tabel ledger yang dapat diperbarui tidak didukung.
-
TRUNCATE TABLEtidak didukung. - Saat sebuah tabel ledger yang dapat diperbarui dibuat, itu menambahkan empat kolom DIHASILKAN SELALU ke tabel ledger. Sebuah tabel ledger yang hanya dapat menambah menambahkan dua kolom ke tabel ledger. Kolom baru ini dihitung terhadap jumlah kolom maksimum yang didukung di Azure SQL Database (1.024).
- Tabel dalam memori tidak didukung.
- Set kolom jarang tidak didukung.
- Partisi SWITCH IN/OUT tidak didukung.
- DBCC CLONEDATABASE tidak didukung.
- Tabel ledger tidak dapat memiliki indeks teks lengkap.
- Tabel ledger tidak boleh berupa tabel grafik.
- Tabel ledger tidak boleh berupa FileTables.
- Tabel ledger tidak dapat memiliki indeks non-kluster rowstore apabila sudah memiliki indeks kolom berkluster.
- Pelacakan perubahan tidak diizinkan pada tabel riwayat tetapi diizinkan pada tabel ledger.
- Mengubah pengambilan data tidak diperbolehkan pada tabel riwayat, tetapi diizinkan pada tabel ledger.
- Replikasi transaksional tidak didukung untuk tabel ledger.
- Pencerminan database tidak didukung.
- Azure Synapse Link didukung tetapi hanya untuk tabel ledger, bukan tabel riwayat.
- Ubah digest path secara manual setelah pemulihan bawaan cadangan database ke Managed Instance Azure SQL.
- Ubah jalur ringkasan secara manual setelah tautan Instans Terkelola dibuat ke Instans Terkelola Azure SQL.
- Sinkronisasi Data SQL tidak didukung dengan tabel ledger.
Jenis data yang tidak didukung
- XML
- SqlVariant
- Jenis data yang ditentukan pengguna
- ALIRAN DATA BERKAS (FILESTREAM)
- Vektor
Keterbatasan tabel temporal
Tabel ledger yang dapat diperbarui didasarkan pada teknologi tabel temporal dan mewarisi sebagian besar dari batasan tersebut, namun tidak semua batasan tersebut. Daftar berikut ini menjelaskan batasan yang diwarisi dari tabel temporal.
- Jika nama tabel riwayat ditentukan selama pembuatan tabel riwayat, Anda harus menentukan skema dan nama tabel dan juga nama tampilan ledger.
- Secara bawaan, tabel riwayat terkompresi per HALAMAN.
- 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 berupa FILETABLE dan dapat berisi kolom jenis data apa pun yang didukung selain FILESTREAM. FILETABLE dan FILESTREAM memungkinkan manipulasi data di luar SQL Server, dan dengan demikian penerapan versi sistem tidak dapat dijamin.
- Sebuah tabel simpul atau tabel edge tidak dapat dibuat sebagai atau diubah menjadi tabel temporal. Grafik tidak didukung dengan ledger.
- Sementara tabel temporal mendukung jenis data blob, seperti
(n)varchar(max), ,varbinary(max)(n)text, danimage, tabel tersebut akan dikenakan biaya penyimpanan yang signifikan dan memiliki implikasi performa karena ukurannya. Dengan demikian, saat merancang sistem Anda, perhatian harus diberikan saat menggunakan jenis data tersebut. - Tabel riwayat harus dibuat dalam database yang sama dengan tabel saat ini. Tanya-jawab temporal melalui Server Tertaut tidak didukung.
- Tabel riwayat tidak boleh memiliki batasan (Kunci Primer, Kunci Asing, tabel, atau batasan kolom).
- Opsi online (
WITH (ONLINE = ON) tidak mempengaruhiALTER TABLE ALTER COLUMNpada kasus tabel temporal yang diberi versi oleh sistem.ALTER COLUMNtidak dilakukan secara online terlepas dari nilai yang ditentukan untuk opsiONLINE. -
INSERTdanUPDATEpernyataan tidak dapat mengacu pada kolom GENERATED ALWAYS. Upaya untuk menyisipkan nilai langsung ke dalam kolom ini diblokir. -
UPDATETEXTdanWRITETEXTtidak didukung. - Pemicu pada tabel riwayat tidak diizinkan.
- Penggunaan teknologi replikasi terbatas:
- Always On: Didukung penuh
- Rekam jepret, penggabungan, dan replikasi transaksional: Tidak didukung untuk tabel temporal
- Tabel riwayat tidak dapat dikonfigurasi sebagai tabel saat ini dalam rantai tabel riwayat.
- Objek atau properti berikut ini tidak direplikasi dari tabel saat ini ke tabel riwayat saat tabel riwayat dibuat:
- Definisi periode
- Definisi identitas
- Indeks
- Statistik
- Periksa batasan
- Pemicu
- Konfigurasi partisi
- Hak Akses
- Predikat keamanan tingkat baris
Pertimbangan perubahan skema
Menambahkan kolom
Dukungan tersedia untuk menambahkan kolom nullable. Menambahkan kolom yang tidak dapat diubah ke null tidak didukung. Ledger dirancang untuk mengabaikan nilai NULL saat menghitung hash versi baris. Berdasarkan itu, ketika kolom nullable ditambahkan, ledger memodifikasi skema ledger dan tabel riwayat untuk menyertakan kolom baru, namun, ini tidak berdampak pada hash baris yang ada. Menambahkan kolom dalam tabel ledger dicatat dalam sys.ledger_column_history.
Menghilangkan kolom dan tabel
Biasanya, menghilangkan kolom atau tabel sepenuhnya menghapus data yang mendasar dari database dan pada dasarnya tidak kompatibel dengan fungsionalitas ledger yang mengharuskan data tidak dapat diubah. Alih-alih menghapus data, ledger hanya mengganti nama objek yang dihilangkan sehingga dihapus secara logis dari skema pengguna, tetapi secara fisik tetap berada dalam database. Setiap kolom yang dihilangkan juga disembunyikan dari skema tabel ledger, sehingga tidak terlihat oleh aplikasi pengguna. Namun, data objek yang dihilangkan tersebut tetap tersedia untuk proses verifikasi ledger, dan memungkinkan pengguna untuk memeriksa data historis apa pun melalui tampilan ledger yang sesuai. Penghapusan kolom dalam tabel ledger ditangkap dalam sys.ledger_column_history. Menjatuhkan tabel ledger dicatat dalam sys.ledger_table_history. Menghilangkan tabel ledger dan objek dependennya ditandai sebagai dihilangkan dalam tampilan katalog sistem dan diganti namanya:
- Tabel ledger yang dihapus ditandai sebagai dihapus dengan mengatur
is_dropped_ledger_tabledalam sys.tables dan diganti namanya dengan format berikut:MSSQL_DroppedLedgerTable_<dropped_ledger_table_name>_<GUID>. - Tabel riwayat yang dihilangkan untuk tabel ledger yang dapat diperbarui diganti namanya menggunakan format berikut:
MSSQL_DroppedLedgerHistory_<dropped_history_table_name>_<GUID>. - Tampilan ledger yang dihilangkan ditandai sebagai dihilangkan oleh pengaturan
is_dropped_ledger_viewdalam sys.views dan diganti namanya menggunakan format berikut:MSSQL_DroppedLedgerView_<dropped_ledger_view_name>_<GUID>.
Catatan
Nama tabel ledger yang dihilangkan, tabel riwayat, dan tampilan ledger mungkin dipotong jika panjang tabel atau tampilan yang diganti namanya melebihi 128 karakter.
Mengubah kolom
Setiap perubahan yang tidak mempengaruhi data dasar dari tabel ledger dapat dilakukan tanpa penanganan khusus karena tidak memengaruhi hash yang diambil pada ledger. Berbagai perubahan ini meliputi:
- Mengubah nullability
- Kolas untuk untai (karakter) Unicode
- Panjang kolom dengan panjang bervariasi
Namun, operasi apa pun yang mungkin memengaruhi format data yang ada, seperti mengubah jenis data tidak didukung.