Mereplikasi Tabel dan Indeks yang Dipartisi
Berlaku untuk: SQL Server Azure SQL Managed Instance
Pemartisian membuat tabel atau indeks besar lebih mudah dikelola karena pemartisian memungkinkan Anda mengelola dan mengakses subset data dengan cepat dan efisien, dan mempertahankan integritas pengumpulan data secara bersamaan. Untuk informasi selengkapnya, lihat Tabel dan Indeks yang Dipartisi. Replikasi mendukung pemartisian dengan menyediakan sekumpulan properti yang menentukan bagaimana tabel dan indeks yang dipartisi harus diperlakukan.
Properti Artikel untuk Replikasi Transaksional dan Penggabungan
Tabel berikut mencantumkan objek yang digunakan untuk mempartisi data.
Objek | Dibuat dengan menggunakan |
---|---|
Tabel atau indeks yang dipartisi | BUAT TABEL atau BUAT INDEKS |
Fungsi partisi | MEMBUAT FUNGSI PARTISI |
Skema partisi | MEMBUAT SKEMA PARTISI |
Properti partisi adalah opsi skema artikel yang menentukan apakah objek partisi harus disalin ke Pelanggan. Opsi skema ini dapat diatur dengan cara berikut:
Di halaman Properti Artikel dari Panduan Publikasi Baru atau kotak dialog Properti Publikasi. Untuk menyalin objek yang tercantum dalam tabel sebelumnya, tentukan nilai true untuk properti Salin skema partisi tabel dan Salin skema partisi indeks. Untuk informasi tentang cara mengakses halaman Properti Artikel, lihat Menampilkan dan Mengubah Properti Publikasi.
Dengan menggunakan parameter schema_option dari salah satu prosedur tersimpan berikut:
sp_addarticle atau sp_changearticle untuk replikasi transaksional
sp_addmergearticle atau sp_changemergearticle untuk replikasi penggabungan
Untuk menyalin objek yang tercantum dalam tabel sebelumnya, tentukan nilai opsi skema yang sesuai. Untuk informasi tentang cara menentukan opsi skema, lihat Menentukan Opsi Skema.
Replikasi menyalin objek ke Pelanggan selama sinkronisasi awal. Jika skema partisi menggunakan grup file selain grup file PRIMER, grup file tersebut harus ada pada Pelanggan sebelum sinkronisasi awal.
Setelah Pelanggan diinisialisasi, perubahan data disebarkan ke Pelanggan dan diterapkan ke partisi yang sesuai. Namun, perubahan pada skema partisi tidak didukung. Replikasi transaksional dan penggabungan tidak mendukung replikasi perintah berikut: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, atau pernyataan REBUILD WITH PARTITION DARI ALTER INDEX. Perubahan yang terkait dengannya tidak akan direplikasi secara otomatis ke Pelanggan. Pengguna bertanggung jawab untuk membuat perubahan serupa secara manual di Pelanggan.
Dukungan Replikasi untuk Pengalihan Partisi
Salah satu manfaat utama partisi tabel adalah kemampuan untuk memindahkan subset data antar partisi dengan cepat dan efisien. Data dipindahkan dengan menggunakan perintah SWITCH PARTITION. Secara default, saat tabel diaktifkan untuk replikasi, operasi SWITCH PARTITION diblokir karena alasan berikut:
Jika data dipindahkan ke atau keluar dari tabel yang ada di Penerbit tetapi tidak ada di Pelanggan, Penerbit dan Pelanggan bisa menjadi tidak konsisten satu sama lain. Masalah ini biasanya terjadi ketika data dipindahkan ke atau keluar dari tabel penahapan.
Jika Pelanggan memiliki definisi yang berbeda untuk tabel yang dipartisi daripada Penerbit, Agen Distribusi akan gagal ketika mencoba menerapkan perubahan pada Pelanggan.
Terlepas dari potensi masalah ini, pengalihan partisi dapat diaktifkan untuk replikasi transaksional. Sebelum Anda mengaktifkan pengalihan partisi, pastikan bahwa semua tabel yang terlibat dalam peralihan partisi ada di Penerbit dan Pelanggan, dan pastikan bahwa definisi tabel dan partisi sama.
Ketika partisi memiliki skema partisi yang sama persis di penerbit dan pelanggan, Anda dapat mengaktifkan allow_partition_switch bersama dengan replication_partition_switch, yang hanya akan mereplikasi pernyataan pengalihan partisi ke pelanggan. Anda juga dapat mengaktifkan allow_partition_switch tanpa mereplikasi DDL. Ini berguna dalam kasus di mana Anda ingin meluncurkan bulan lama dari partisi tetapi tetap menerapkan partisi yang direplikasi selama satu tahun lagi untuk tujuan pencadangan di pelanggan.
Jika Anda mengaktifkan pengalihan partisi pada SQL Server 2008 R2 melalui versi saat ini, Anda mungkin juga memerlukan operasi pemisahan dan penggabungan dalam waktu dekat. Sebelum menjalankan operasi pemisahan atau penggabungan pada tabel yang diaktifkan replikasi atau CDC, pastikan bahwa partisi yang dimaksud tidak memiliki perintah yang direplikasi yang tertunda. Anda juga harus memastikan bahwa tidak ada operasi DML yang dijalankan pada partisi selama operasi pemisahan dan penggabungan. Jika ada transaksi yang belum diproses oleh pembaca log atau pekerjaan penangkapan CDC, atau jika operasi DML dilakukan pada partisi tabel yang diaktifkan CDC atau direplikasi sementara operasi pemisahan atau penggabungan dijalankan (melibatkan partisi yang sama), itu dapat menyebabkan kesalahan pemrosesan (kesalahan 608 - Tidak ada entri katalog yang ditemukan untuk ID partisi) dengan agen pembaca log atau pekerjaan penangkapan CDC. Untuk memperbaiki kesalahan, mungkin memerlukan reinisialisasi langganan atau menonaktifkan CDC pada tabel atau database tersebut.
Skenario yang tidak didukung
Skenario berikut tidak didukung saat menggunakan replikasi dengan pengalihan partisi:
Replikasi peer-to-peer
Replikasi peer-to-peer tidak didukung dengan pengalihan partisi.
Penggunaan variabel dengan pengalihan partisi
Menggunakan variabel dengan pengalihan partisi pada tabel yang diterbitkan dengan replikasi transaksional atau Change Data Capture (CDC) tidak didukung untuk pernyataan tersebut ALTER TABLE ... SWITCH TO ... PARTITION ...
.
Misalnya, kode pengalihan partisi berikut tidak akan berfungsi dengan CDC yang diaktifkan pada database, atau dengan TableA berpartisipasi dalam publikasi transaksional:
DECLARE @SomeVariable INT = $PARTITION.pf_test(10);
ALTER TABLE dbo.TableA
SWITCH TO dbo.TableB
PARTITION @SomeVariable;
Sebagai gantinya, alihkan partisi Anda menggunakan fungsi partisi secara langsung, seperti contoh berikut:
ALTER TABLE NonPartitionedTable
SWITCH TO PartitionedTable PARTITION $PARTITION.pf_test(10);
Mengaktifkan Pengalihan Partisi
Properti berikut untuk publikasi transaksional memungkinkan pengguna mengontrol perilaku pengalihan partisi di lingkungan yang direplikasi:
@allow_partition_switch
, ketika diatur ketrue
, SWITCH PARTITION dapat dijalankan terhadap database publikasi.@replicate_partition_switch
menentukan apakah pernyataan SWITCH PARTITION DDL harus direplikasi ke Pelanggan. Opsi ini hanya valid ketika@allow_partition_switch
diatur ketrue
.
Anda dapat mengatur properti ini dengan menggunakan sp_addpublication saat publikasi dibuat, atau dengan menggunakan sp_changepublication setelah publikasi dibuat. Seperti disebutkan sebelumnya, replikasi penggabungan tidak mendukung pengalihan partisi. Untuk menjalankan SWITCH PARTITION pada tabel yang diaktifkan untuk replikasi penggabungan, hapus tabel dari publikasi.