Filter Data yang Diterbitkan

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Memfilter artikel tabel memungkinkan Anda membuat partisi data untuk diterbitkan. Dengan memfilter data yang diterbitkan, Anda dapat:

  • Minimalkan jumlah data yang dikirim melalui jaringan.

  • Kurangi jumlah ruang penyimpanan yang diperlukan di Pelanggan.

  • Sesuaikan publikasi dan aplikasi berdasarkan persyaratan Pelanggan individual.

  • Hindari atau kurangi konflik jika Pelanggan memperbarui data, karena partisi data yang berbeda dapat dikirim ke Pelanggan yang berbeda (tidak ada dua Pelanggan yang akan memperbarui nilai data yang sama).

  • Hindari mengirimkan data sensitif. Filter baris dan filter kolom dapat digunakan untuk membatasi akses Pelanggan ke data. Untuk replikasi penggabungan, ada pertimbangan keamanan jika Anda menggunakan filter berparameter yang menyertakan HOST_NAME(). Untuk informasi selengkapnya, lihat bagian "Pemfilteran dengan HOST_NAME()" di Filter Baris Berparameter.

Replikasi menawarkan empat jenis filter:

  • Filter baris statis, yang tersedia dengan semua jenis replikasi.

    Dengan menggunakan filter baris statis, Anda dapat memilih subkumpulan baris yang akan diterbitkan. Semua Pelanggan ke publikasi yang difilter menerima subset baris yang sama untuk tabel yang difilter. Untuk informasi selengkapnya, lihat bagian "Filter Baris Statis" dalam topik ini.

  • Filter kolom, yang tersedia dengan semua jenis replikasi.

    Dengan menggunakan filter kolom, Anda dapat memilih subset kolom yang akan diterbitkan. Untuk informasi selengkapnya, lihat bagian "Filter Kolom" dalam topik ini.

  • Filter baris berparameter, yang hanya tersedia dengan replikasi penggabungan.

    Dengan menggunakan filter baris berparameter, Anda dapat memilih subkumpulan baris yang akan diterbitkan. Tidak seperti filter statis yang mengirim subset baris yang sama ke setiap Pelanggan, filter baris berparameter menggunakan nilai data yang disediakan oleh Pelanggan untuk mengirim pelanggan subset baris yang berbeda. Untuk informasi selengkapnya, lihat Filter Baris Berparameter.

  • Filter gabungan, yang hanya tersedia dengan replikasi penggabungan.

    Dengan menggunakan filter gabungan, Anda dapat memperluas filter baris dari satu tabel yang diterbitkan ke tabel lain. Untuk informasi selengkapnya, lihat Menggabungkan Filter.

Filter Baris Statis

Ilustrasi berikut ini memperlihatkan tabel yang diterbitkan yang difilter sehingga hanya baris 2, 3, dan 6 yang disertakan dalam publikasi.

Row filtering

Filter baris statis menggunakan klausa WHERE untuk memilih data yang sesuai untuk diterbitkan; Anda menentukan bagian akhir dari klausa WHERE. Pertimbangkan Tabel Produk dalam database sampel Adventure Works, yang berisi kolom ProductLine. Untuk menerbitkan hanya baris dengan data tentang produk yang terkait dengan sepeda gunung, tentukan ProductLine = 'M'.

Filter baris statis menghasilkan satu set data untuk setiap publikasi. Dalam contoh sebelumnya, semua Pelanggan hanya akan menerima baris dengan data tentang produk yang terkait dengan sepeda gunung. Jika Anda memiliki Pelanggan lain yang hanya memerlukan baris dengan data pada produk yang terkait dengan sepeda jalan:

  • Dengan rekam jepret atau replikasi transaksional, Anda dapat membuat publikasi lain dan menyertakan tabel di kedua publikasi (dalam klausa filter untuk artikel dalam publikasi tersebut, tentukan ProductLine = 'R').

    Catatan

    Filter baris dalam publikasi transaksional dapat menambahkan overhead yang signifikan karena klausa filter artikel dievaluasi untuk setiap baris log yang ditulis untuk tabel yang diterbitkan, untuk menentukan apakah baris harus direplikasi. Filter baris dalam publikasi transaksional harus dihindari jika setiap simpul replikasi dapat mendukung beban data lengkap, dan himpunan data keseluruhan cukup kecil.

  • Dengan replikasi penggabungan, gunakan filter baris berparameter daripada membuat beberapa publikasi dengan filter baris statis. Untuk informasi selengkapnya, lihat Filter Baris Berparameter.

Untuk menentukan atau mengubah filter baris statis, lihat Menentukan dan Mengubah Filter Baris Statis.

Filter Kolom

Ilustrasi berikut ini memperlihatkan publikasi yang memfilter kolom C.

Column filtering

Anda juga dapat menggunakan pemfilteran baris dan kolom bersama-sama, seperti yang diilustrasikan di sini.

Row and column filtering

Setelah publikasi dibuat, Anda bisa menggunakan pemfilteran kolom untuk menghilangkan kolom dari publikasi yang sudah ada, tetapi mempertahankan kolom dalam tabel di Publisher, dan juga untuk menyertakan kolom yang sudah ada dalam publikasi. Untuk perubahan lain, seperti menambahkan kolom baru ke tabel lalu menambahkannya ke artikel yang diterbitkan, gunakan replikasi perubahan skema. Untuk informasi selengkapnya, lihat bagian "Menambahkan Kolom" dan "Menjatuhkan Kolom" dalam topik Membuat Perubahan Skema pada Database Publikasi.

Tipe kolom yang tercantum dalam tabel berikut ini tidak dapat difilter dari jenis publikasi tertentu.

Jenis kolom Jenis publikasi dan opsi
Kolom kunci primer Kolom kunci primer diperlukan untuk semua tabel dalam publikasi transaksi. Kunci primer tidak diperlukan untuk tabel dalam publikasi gabungan, tetapi jika kolom kunci utama ada, itu tidak dapat difilter.
Kolom kunci asing Semua publikasi yang dibuat menggunakan wizard Publikasi Baru. Anda dapat memfilter kolom kunci asing menggunakan prosedur tersimpan Transact-SQL. Untuk informasi selengkapnya, Tentukan dan Ubah Filter Kolom.
Kolom rowguid Gabungkan publikasi*
Kolom msrepl_tran_version Rekam jepret atau publikasi transaksi yang memungkinkan langganan yang dapat diperbarui
Kolom yang tidak memperbolehkan NULL dan tidak memiliki nilai default atau kumpulan properti IDENTITY. Rekam jepret atau publikasi transaksi yang memungkinkan langganan yang dapat diperbarui
Kolom dengan batasan atau indeks unik Rekam jepret atau publikasi transaksi yang memungkinkan langganan yang dapat diperbarui
Semua kolom dalam publikasi gabungan SQL Server 7.0 Kolom tidak dapat difilter dalam publikasi gabungan SQL Server 7.0.
Tanda Waktu Rekam jepret SQL Server 7.0 atau publikasi transaksi yang memungkinkan langganan yang dapat diperbarui

*Jika Anda menerbitkan tabel dalam publikasi gabungan dan tabel tersebut sudah berisi kolom pengidentifikasi unik tipe data dengan kumpulan properti ROWGUIDCOL, replikasi dapat menggunakan kolom ini alih-alih membuat kolom tambahan bernama rowguid. Dalam hal ini, kolom yang ada harus diterbitkan.

Untuk menentukan atau mengubah filter kolom, lihat Menentukan dan Mengubah Filter Kolom.

Pertimbangan Pemfilteran

Ingatlah pertimbangan berikut saat memfilter data:

  • Semua kolom yang dirujuk dalam filter baris harus disertakan dalam publikasi. Dengan kata lain, Anda tidak dapat menggunakan filter kolom untuk mengecualikan kolom yang digunakan dalam filter baris.

  • Jika filter ditambahkan atau diubah setelah langganan diinisialisasi, langganan harus diinisialisasi ulang.

  • Jumlah maksimum byte yang diizinkan untuk kolom yang digunakan dalam filter adalah 1024 untuk artikel dalam publikasi gabungan dan 8000 untuk artikel dalam publikasi transaksional.

  • Kolom dengan tipe data berikut tidak dapat dirujuk dalam filter baris atau filter gabungan:

    • varchar(max) dan nvarchar(max)

    • varbinary(max)

    • teks dan ntext

    • gambar

    • XML

    • UDT

  • Replikasi transaksional memungkinkan Anda mereplikasi tampilan terindeks sebagai tampilan atau sebagai tabel. Jika Anda mereplikasi tampilan sebagai tabel, Anda tidak dapat memfilter kolom dari tabel.

Filter baris tidak dirancang untuk bekerja di seluruh database. SQL Server sengaja membatasi eksekusi sp_replcmds (filter mana yang dijalankan di bawah) ke pemilik database (dbo). Dbo tidak memiliki hak istimewa lintas database. Dengan penambahan CDC (Ubah Pengambilan Data) di SQL Server 2008 (10.0.x) logika sp_replcmds mengisi tabel pelacakan perubahan dengan informasi yang dapat dikembalikan pengguna dan kueri. Untuk alasan keamanan, SQL Server membatasi eksekusi logika ini sehingga dbo berbahaya tidak dapat menjajaki jalur eksekusi ini. Misalnya, dbo berbahaya dapat menambahkan pemicu pada tabel CDC yang kemudian akan dijalankan di bawah konteks panggilan pengguna sp_replcmds, dalam hal ini agen logreader. Jika akun yang dijalankan agen memiliki hak istimewa yang lebih tinggi, dbo berbahaya dapat meningkatkan hak istimewanya.

Lihat Juga

Menerbitkan Objek Data dan Database