Publikasikan data dan objek basis data

Berlaku untuk: SQL ServerAzure SQL Managed Instance

Saat membuat publikasi, Anda memilih tabel dan objek database lain yang ingin Anda terbitkan. Anda bisa menerbitkan objek database berikut menggunakan replikasi.

Objek database Replikasi rekam jepret dan replikasi transaksional Replikasi penggabungan
Tabel X X
Tabel Yang Dipartisi X X
Prosedur Tersimpan – Definisi (Transact-SQL dan CLR) X X
Prosedur Tersimpan – Eksekusi (Transact-SQL dan CLR) X tidak
Tampilan X X
Tampilan Terindeks X X
Tampilan Terindeks sebagai Tabel X tidak
Jenis yang Ditentukan Pengguna (CLR) X X
Fungsi yang Ditentukan Pengguna (Transact-SQL dan CLR) X X
Jenis Data Alias X X
Indeks teks lengkap X X
Objek Skema (batasan, indeks, pemicu DML pengguna, properti yang diperluas, dan kolase) X X

Membuat publikasi

Untuk membuat publikasi, berikan informasi berikut:

  • The Distributor.
  • Lokasi file cuplikan.
  • Database publikasi.
  • Jenis publikasi yang akan dibuat (rekam jepret, transaksi, transaksi dengan langganan yang dapat diperbarui, atau penggabungan).
  • Objek data dan database (artikel) untuk disertakan dalam publikasi.
  • Filter baris statis dan filter kolom untuk semua jenis publikasi, dan filter baris berparameter dan filter gabungan untuk publikasi gabungan.
  • Jadwal Agen Rekam Jepret.
  • Akun tempat agen-agen berikut dijalankan: Snapshot Agent untuk semua publikasi; Log Reader Agent untuk semua publikasi transaksional; Queue Reader Agent untuk publikasi transaksional yang memungkinkan pembaruan langganan.
  • Nama dan deskripsi publikasi.

Untuk informasi tentang cara bekerja dengan publikasi, lihat artikel berikut:

Catatan

Menghapus artikel atau publikasi tidak menghapus objek dari Subscriber.

Tabel penerbitan

Objek yang paling umum diterbitkan adalah tabel. Tautan berikut memberikan informasi lebih lanjut tentang tabel publikasi:

Saat Anda mempublikasikan tabel untuk replikasi, Anda dapat menentukan objek skema mana yang akan disalin ke Subscriber, seperti integritas referensial yang dideklarasikan (kendala kunci utama, kendala referensi, kendala unik), indeks, pemicu DML pengguna (pemicu DDL tidak dapat direplikasi), properti ekstensi, dan kolasi. Properti tambahan hanya direplikasi selama sinkronisasi awal antara Publisher dan Subscriber. Jika Anda menambahkan atau mengubah properti yang diperluas setelah sinkronisasi awal, perubahan tidak direplikasi.

Untuk menentukan opsi skema, lihat Menentukan Opsi Skema atau SchemaOption.

Tabel dan Indeks yang Dipartisi

Replikasi mendukung penerbitan tabel dan indeks yang dipartisi. Tingkat dukungan tergantung pada jenis replikasi yang Anda gunakan, serta opsi yang Anda tentukan untuk publikasi dan artikel yang terkait dengan tabel yang dipartisi. Untuk informasi selengkapnya, lihat Mereplikasi Tabel dan Indeks yang Dipartisi.

Mempublikasikan prosedur tersimpan

Semua jenis replikasi memungkinkan Anda mereplikasi definisi prosedur tersimpan: pernyataan CREATE PROCEDURE disalin ke setiap Pelanggan. Dalam kasus prosedur tersimpan common language runtime (CLR), rakitan terkait juga disalin. Perubahan pada prosedur direplikasi ke Subscriber; perubahan pada assembly terkait tidak direplikasi.

Selain mereplikasi definisi prosedur tersimpan, replikasi transaksional memungkinkan Anda mereplikasi eksekusi prosedur tersimpan. Fitur ini berguna untuk mereplikasi hasil prosedur tersimpan yang berorientasi pemeliharaan yang memengaruhi sejumlah besar data. Untuk informasi selengkapnya, lihat Menerbitkan Eksekusi Prosedur Tersimpan di Replikasi Transaksional.

Tampilan penerbitan

Semua jenis replikasi memungkinkan Anda mereplikasi tampilan. Anda dapat menyalin tampilan beserta indeks pendampingnya (jika itu tampilan terindeks) ke Subscriber, tetapi Anda juga harus mereplikasi tabel dasar.

Untuk tampilan terindeks, replikasi transaksional juga memungkinkan Anda untuk mereplikasi tampilan terindeks sebagai tabel daripada tampilan, menghilangkan kebutuhan untuk juga mereplikasi tabel dasar. Untuk melakukannya, tentukan salah satu opsi "indexed view logbased" untuk parameter @type pada sp_addarticle (Transact-SQL). Untuk informasi selengkapnya tentang menggunakan sp_addarticle, lihat Menentukan Artikel.

Menerbitkan fungsi yang didefinisikan pengguna

Pernyataan CREATE FUNCTION untuk fungsi CLR dan fungsi Transact-SQL disalin ke setiap Subscriber. Untuk fungsi CLR, assembly terkait juga disalin. Perubahan pada fungsi direplikasi ke Pelanggan; sedangkan perubahan pada rakitan terkait tidak.

Menerbitkan Jenis yang Ditentukan Pengguna dan Jenis Data Alias

Replikasi memperlakukan kolom yang menggunakan tipe atau tipe data alias yang ditentukan pengguna seperti kolom lain dan mereplikasinya ke Pelanggan. Proses menjalankan pernyataan CREATE TYPE untuk setiap tipe yang direplikasi di Subscriber sebelum tabel dibuat. Untuk tipe yang ditentukan pengguna, replikasi juga menyalin rakitan terkait ke setiap Subscriber. Replikasi tidak mereplikasi perubahan pada tipe dan tipe data alias yang ditentukan pengguna ke Subscriber.

Jika Anda mendefinisikan tipe di database tetapi tidak merujuknya di kolom manapun saat membuat publikasi, replikasi tidak menyalin tipe tersebut ke Subscribers. Jika Anda kemudian membuat kolom dengan tipe tersebut di database dan ingin mereplikasinya, Anda harus terlebih dahulu menyalin tipe tersebut secara manual (dan rakitan terkait untuk tipe yang ditentukan pengguna) ke setiap Subscriber.

Menerbitkan Indeks Teks Lengkap

Pernyataan CREATE FULLTEXT INDEX disalin ke setiap Pelanggan, dan indeks teks lengkap dibuat di Pelanggan. Perubahan yang dilakukan pada indeks teks lengkap yang menggunakan ALTER FULLTEXT INDEX tidak direplikasi.

Membuat Perubahan Skema pada Objek yang Diterbitkan

Replikasi mendukung berbagai perubahan skema pada objek yang diterbitkan. Ketika Anda melakukan perubahan skema berikut pada objek yang dipublikasikan sesuai pada SQL Server Publisher, replikasi secara default akan menyebarkan perubahan tersebut ke semua Pelanggan SQL Server:

  • ALTER TABLE

  • ALTER VIEW

  • ALTER PROCEDURE

  • ALTER FUNCTION

  • ALTER TRIGGER

Untuk informasi selengkapnya, lihat Membuat Perubahan Skema pada Database Publikasi.

Pertimbangan untuk penerbitan

Perhatikan pertimbangan berikut saat mempublikasikan objek basis data:

  • Pengguna dapat mengakses database saat pembuatan publikasi dan snapshot awal, tetapi sebaiknya membuat publikasi saat aktivitas di Publisher lebih rendah.

  • Anda tidak bisa mengganti nama database setelah membuat publikasi di dalamnya. Untuk mengganti nama database, Anda harus terlebih dahulu menghapus replikasi dari database.

  • Jika Anda mempublikasikan objek basis data yang bergantung pada satu atau lebih objek basis data lain, Anda harus mempublikasikan semua objek yang direferensikan. Misalnya, jika Anda menerbitkan tampilan yang bergantung pada tabel, Anda juga harus menerbitkan tabel.

    Catatan

    Jika Anda menambahkan artikel ke publikasi gabungan dan artikel yang sudah ada bergantung pada artikel baru, Anda harus menentukan urutan pemrosesan untuk kedua artikel dengan menggunakan parameter @processing_order sp_addmergearticle dan sp_changemergearticle. Pertimbangkan skenario berikut: Anda mempublikasikan sebuah tabel tetapi tidak mempublikasikan fungsi yang dirujuk oleh tabel tersebut. Jika Anda tidak mempublikasikan fungsi tersebut, tabel tidak dapat dibuat di Subscriber. Saat Anda menambahkan fungsi ke publikasi: tentukan nilai 1 untuk parameter @processing_order sp_addmergearticle; dan tentukan nilai 2 untuk parameter @processing_order sp_changemergearticle, menentukan nama tabel untuk parameter @article. Urutan pemrosesan ini memastikan bahwa Anda membuat fungsi pada Subscriber sebelum tabel yang bergantung padanya. Anda dapat menggunakan angka yang berbeda untuk setiap artikel selama angka untuk fungsi lebih rendah dari angka untuk tabel.

  • Nama publikasi tidak boleh menyertakan karakter berikut: % * [ ] | : " ? \ / . <>

Keterbatasan pada objek penerbitan

  • Jumlah maksimum artikel dan kolom yang dapat Anda publikasikan berbeda-beda menurut jenis publikasi. Untuk informasi selengkapnya, lihat bagian "Objek Replikasi" dari Spesifikasi Kapasitas Maksimum untuk SQL Server.

  • Anda tidak dapat menerbitkan prosedur tersimpan, tampilan, trigger, dan fungsi yang ditentukan pengguna yang didefinisikan dengan WITH ENCRYPTION sebagai bagian dari replikasi SQL Server.

  • Anda dapat mereplikasi koleksi skema XML tetapi perubahan tidak direplikasi setelah snapshot awal.

  • Tabel yang diterbitkan untuk replikasi transaksional harus memiliki kunci primer. Jika sebuah tabel berada dalam publikasi replikasi transaksional, Anda tidak dapat menonaktifkan indeks apa pun yang terkait dengan kolom kunci utama. Replikasi membutuhkan indeks-indeks ini. Untuk menonaktifkan indeks, Anda harus terlebih dahulu menghilangkan tabel dari publikasi.

  • Default yang terikat yang dibuat dengan sp_bindefault (Transact-SQL) tidak direplikasi (default yang terikat sudah tidak digunakan lagi dan digantikan oleh default yang dibuat dengan kata kunci DEFAULT dari ALTER TABLE atau CREATE TABLE).

  • Anda tidak dapat mempublikasikan fungsi yang berisi petunjuk NOEXPAND pada tampilan terindeks dalam publikasi yang sama dengan tabel dan tampilan terindeks yang direferensikan, karena urutan pengiriman agen distribusi. Untuk mengatasi masalah ini, tempatkan tabel dan pembuatan tampilan terindeks dalam publikasi pertama, dan tambahkan fungsi yang berisi petunjuk NOEXPAND pada tampilan terindeks ke publikasi kedua yang Anda terbitkan setelah publikasi pertama selesai. Atau, buat skrip untuk fungsi-fungsi ini dan kirimkan skrip tersebut dengan menggunakan parameter @post_snapshot_script dari sp_addpublication.

Skema dan Kepemilikan Objek

Replikasi memiliki perilaku default berikut di Wizard Publikasi Baru sehubungan dengan skema dan kepemilikan objek:

  • Untuk artikel dalam publikasi gabungan dengan tingkat kompatibilitas 90 atau lebih tinggi, publikasi rekam jepret, dan publikasi transaksi: secara default, pemilik objek di Pelanggan sama dengan pemilik objek yang sesuai di Penerbit. Jika skema pemilik objek tidak ada di Subscriber, skema tersebut akan dibuat secara otomatis.

  • Untuk artikel dalam publikasi gabungan dengan tingkat kompatibilitas di bawah 90: secara default, pemilik dikosongkan dan ditetapkan sebagai dbo saat objek dibuat di Subscriber.

  • Untuk artikel dalam publikasi Oracle: secara default, pemilik ditentukan sebagai dbo.

  • Untuk artikel dalam publikasi yang menggunakan rekam jepret mode karakter (yang digunakan untuk Pelanggan non-SQL Server dan Pelanggan Ringkas SQL Server): secara default, pemilik dibiarkan kosong. Pemilik secara default menggunakan pemilik yang terkait dengan akun yang digunakan oleh Agen Distribusi atau Agen Penggabungan untuk tersambung ke Subscriber.

Anda dapat mengubah pemilik objek melalui kotak dialog Properti Artikel - <Artikel> dan melalui prosedur tersimpan berikut: sp_addarticle, sp_addmergearticle, sp_changearticle, dan sp_changemergearticle. Untuk informasi selengkapnya, lihat Menampilkan dan Mengubah Properti Publikasi, Menentukan Artikel, serta Menampilkan dan Mengubah Properti Artikel.

Menerbitkan Data kepada Pelanggan yang Menjalankan Versi SQL Server Sebelumnya

  • Jika Anda mempublikasikan ke Subscriber yang menjalankan versi SQL Server sebelumnya, Anda dibatasi pada fungsi versi tersebut. Keterbatasan ini berlaku baik untuk fungsionalitas spesifik replikasi maupun fungsi keseluruhan produk.

  • Publikasi gabungan menggunakan tingkat kompatibilitas, yang menentukan fitur apa saja yang dapat Anda gunakan dalam publikasi dan memungkinkan Anda mendukung Pelanggan yang menjalankan versi SQL Server sebelumnya.

Menerbitkan tabel di lebih dari satu publikasi

Replikasi mendukung penerbitan artikel di beberapa publikasi, termasuk menerbitkan ulang data, dengan pembatasan berikut:

  • Jika Anda menerbitkan artikel di publikasi transaksional dan publikasi gabungan, atur properti @published_in_tran_pub menjadi TRUE untuk artikel penggabungan. Untuk informasi selengkapnya tentang mengatur properti, lihat Menampilkan dan Mengubah Properti Publikasi dan Menampilkan dan Mengubah Properti Artikel.

    Atur properti @published_in_tran_pub jika sebuah artikel merupakan bagian dari langganan transaksi dan termasuk dalam publikasi gabungan. Secara default, replikasi transaksi mengharapkan tabel di Subscriber hanya bisa dibaca. Jika merge replication membuat perubahan data pada tabel dalam langganan transaksional, data dapat menjadi tidak konvergen. Untuk menghindari masalah ini, tetapkan tabel tersebut sebagai khusus unduhan dalam publikasi penggabungan. Pengaturan ini mencegah Subscriber penggabungan mengunggah perubahan data ke tabel. Untuk informasi selengkapnya, lihat Mengoptimalkan Kinerja Replikasi Penggabungan dengan Artikel Hanya-Unduh.

  • Anda tidak dapat menerbitkan artikel dalam kedua jenis publikasi, yaitu publikasi gabungan dan publikasi transaksional dengan langganan pembaruan dalam antrean.

  • Anda tidak dapat menerbitkan ulang artikel yang termasuk dalam publikasi transaksional yang mendukung pembaruan langganan.

  • Jika Anda menerbitkan artikel di lebih dari satu publikasi transaksional yang mendukung langganan pembaruan antrean, artikel tersebut harus memiliki nilai yang sama untuk properti berikut di semua publikasi:

    Properti Parameter dalam sp_addarticle
    Manajemen rentang identitas @auto_identity_range (tidak digunakan lagi) dan @identityrangemangementoption
    Rentang identitas penerbit @pub_identity_range
    Rentang identitas @identity_range
    Ambang batas rentang identitas @threshold

    Untuk informasi selengkapnya tentang parameter ini, lihat sp_addarticle (Transact-SQL).

  • Jika Anda menerbitkan artikel di lebih dari satu publikasi merge, artikel tersebut harus memiliki nilai yang sama untuk properti berikut di semua publikasi:

    Properti Parameter dalam sp_addmergearticle
    Pelacakan kolom @column_tracking
    Opsi skema @schema_option
    Pemfilteran kolom @vertical_partition
    Opsi pelanggan untuk mengunggah @subscriber_upload_options
    Pelacakan penghapusan bersyarat @delete_tracking
    Kompensasi kesalahan @compensate_for_errors
    Manajemen rentang identitas @auto_identity_range (tidak digunakan lagi) dan @identityrangemangementoption
    Rentang identitas penerbit @pub_identity_range
    Rentang identitas @identity_range
    Ambang batas rentang identitas @threshold
    Opsi partisi @partition_options
    Streaming kolom BLOB @stream_blob_columns
    Jenis filter @filter_type (parameter dalam sp_addmergefilter)

    Untuk informasi selengkapnya tentang parameter ini, lihat sp_addmergearticle (Transact-SQL) dan sp_addmergefilter (Transact-SQL).

  • Replikasi transaksional dan replikasi gabungan tanpa filter mendukung penerbitan tabel di beberapa publikasi lalu berlangganan dalam satu tabel di database langganan (umumnya disebut skenario rollup). Rollup sering digunakan untuk mengagregasi subkumpulan data yang berasal dari beberapa lokasi ke dalam satu tabel pada Subscriber pusat. Publikasi penggabungan terfilter tidak mendukung skenario Subscriber terpusat. Untuk replikasi penggabungan, rollup biasanya diimplementasikan melalui satu publikasi dengan filter baris yang diparameterkan. Untuk informasi selengkapnya, lihat Filter Baris Berparameter.