Bagikan melalui


Menerbitkan Objek Data dan Database

Berlaku untuk: SQL Server Azure 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 Penggabungan replikasi
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 no
Tampilan X X
Tampilan Terindeks X X
Tampilan Terindeks sebagai Tabel X no
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, Anda memberikan informasi berikut:

  • The Distributor.
  • Lokasi file rekam jepret.
  • 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 berikut akan berjalan: Agen Rekam Jepret untuk semua publikasi; Agen Pembaca Log untuk semua publikasi transaksi; Agen Pembaca Antrean untuk publikasi transaksional yang memungkinkan pembaruan langganan.
  • Nama dan deskripsi untuk publikasi.

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

Catatan

Menghapus artikel atau publikasi tidak menghapus objek dari Pelanggan.

Tabel Penerbitan

Objek yang paling umum diterbitkan adalah tabel. Tautan berikut ini menyediakan informasi tambahan tentang area yang terkait dengan tabel penerbitan:

Saat menerbitkan tabel untuk replikasi, Anda dapat menentukan objek skema mana yang harus disalin ke Pelanggan, seperti integritas referensial yang dinyatakan (batasan kunci utama, batasan referensi, batasan unik), indeks, pemicu DML pengguna (pemicu DDL tidak dapat direplikasi), properti yang diperluas, dan kolase. Properti yang diperluas hanya direplikasi dalam sinkronisasi awal antara Penerbit dan Pelanggan. 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 digunakan, dan opsi yang Anda tentukan untuk publikasi dan artikel yang terkait dengan tabel yang dipartisi. Untuk informasi selengkapnya, lihat Mereplikasi Tabel dan Indeks yang Dipartisi.

Menerbitkan Prosedur Tersimpan

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

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

Tampilan Penerbitan

Semua jenis replikasi memungkinkan Anda mereplikasi tampilan. Tampilan (dan indeks yang menyertainya, jika tampilan terindeks) dapat disalin ke Pelanggan, tetapi tabel dasar juga harus direplikasi.

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

Menerbitkan Fungsi yang Ditentukan Pengguna

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

Menerbitkan Jenis yang Ditentukan Pengguna dan Jenis Data Alias

Kolom yang menggunakan jenis yang ditentukan pengguna atau jenis data alias direplikasi ke Pelanggan seperti kolom lainnya. CREATE TYPEstatement untuk setiap jenis yang direplikasi dijalankan di Pelanggan sebelum tabel dibuat. Dalam kasus jenis yang ditentukan pengguna, rakitan terkait juga disalin ke setiap Pelanggan. Perubahan pada jenis yang ditentukan pengguna dan jenis data alias tidak direplikasi ke Pelanggan.

Jika jenis didefinisikan dalam database, tetapi tidak direferensikan dalam kolom apa pun saat publikasi dibuat, jenisnya tidak disalin ke Pelanggan. Jika Anda kemudian membuat kolom jenis tersebut dalam database dan ingin mereplikasinya, Anda harus terlebih dahulu menyalin jenis secara manual (dan rakitan terkait untuk jenis yang ditentukan pengguna) ke setiap Pelanggan.

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 menggunakan ALTER FULLTEXT INDEX tidak direplikasi.

Membuat Perubahan Skema pada Objek yang Diterbitkan

Replikasi mendukung berbagai perubahan skema pada objek yang diterbitkan. Ketika Anda membuat salah satu perubahan skema berikut pada objek yang diterbitkan yang sesuai di Penerbit SQL Server, perubahan tersebut disebarluaskan secara default ke semua Pelanggan SQL Server:

  • ALTER TABLE

  • UBAH TAMPILAN

  • ALTER PROCEDURE

  • ALTER FUNCTION

  • UBAH PEMICU

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

Pertimbangan untuk Penerbitan

Ingatlah masalah berikut saat menerbitkan objek database:

  • Database dapat diakses oleh pengguna selama pembuatan publikasi dan rekam jepret awal, tetapi disarankan untuk membuat publikasi selama waktu aktivitas yang lebih rendah pada Penerbit.

  • Database tidak dapat diganti namanya setelah publikasi dibuat di dalamnya. Untuk mengganti nama, Anda harus terlebih dahulu menghapus replikasi dari database.

  • Jika Anda menerbitkan objek database yang bergantung pada satu atau beberapa objek database lainnya, Anda harus menerbitkan semua objek yang dirujuk. 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 menggunakan parameter @processing_order sp_addmergearticle dan sp_changemergearticle. Pertimbangkan skenario berikut: Anda menerbitkan tabel tetapi Anda tidak menerbitkan fungsi yang direferensikan tabel. Jika Anda tidak menerbitkan fungsi, tabel tidak dapat dibuat di Pelanggan. 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 di Pelanggan 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 dapat menyertakan karakter berikut: % * [ ] | : " ? \ / <>.

Batasan objek penerbitan

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

  • Prosedur tersimpan, tampilan, pemicu, dan fungsi yang ditentukan pengguna yang didefinisikan sebagai WITH ENCRYPTION tidak dapat diterbitkan sebagai bagian dari replikasi SQL Server.

  • Koleksi skema XML dapat direplikasi tetapi perubahan tidak direplikasi setelah rekam jepret awal.

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

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

  • Fungsi yang berisi petunjuk NOEXPAND pada tampilan terindeks tidak dapat diterbitkan dalam publikasi yang sama dengan tabel yang direferensikan dan tampilan terindeks, 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 berikan skrip dengan menggunakan parameter @post_snapshot_script 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 yang memiliki objek tidak ada di Pelanggan, skema tersebut dibuat secara otomatis.

  • Untuk artikel dalam publikasi gabungan dengan tingkat kompatibilitas yang lebih rendah dari 90: secara default, pemilik dibiarkan kosong dan ditentukan sebagai dbo selama pembuatan objek pada Pelanggan.

  • 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 default ke pemilik yang terkait dengan akun yang digunakan oleh Agen Distribusi atau Agen Penggabungan untuk terhubung ke Pelanggan.

Pemilik objek dapat diubah 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 menerbitkan ke Pelanggan yang menjalankan versi SQL Server sebelumnya, Anda terbatas pada fungsionalitas versi tersebut, baik dalam hal fungsionalitas khusus replikasi dan fungsionalitas produk secara keseluruhan.

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

Menerbitkan Tabel di Lebih dari Satu Publikasi

Replikasi mendukung artikel penerbitan di beberapa publikasi (termasuk menerbitkan ulang data) dengan batasan berikut:

  • Jika artikel diterbitkan dalam publikasi transaksi dan publikasi penggabungan, pastikan bahwa properti @published_in_tran_pub diatur ke TRUE untuk artikel penggabungan. Untuk informasi selengkapnya tentang mengatur properti, lihat Menampilkan dan Mengubah Properti Publikasi dan Menampilkan dan Mengubah Properti Artikel.

    Anda juga harus mengatur properti @published_in_tran_pub jika artikel adalah bagian dari langganan transaksi dan disertakan dalam publikasi gabungan. Jika demikian, ketahuilah bahwa secara default replikasi transaksional mengharapkan tabel di Pelanggan diperlakukan sebagai baca-saja; jika replikasi penggabungan membuat perubahan data pada tabel dalam langganan transaksional, non-konvergensi data dapat terjadi. Untuk menghindari kemungkinan ini, sebaiknya tabel tersebut ditentukan sebagai unduhan saja dalam publikasi gabungan. Ini mencegah pelanggan gabungan mengunggah perubahan data ke tabel. Untuk informasi selengkapnya, lihat Mengoptimalkan Performa Replikasi Penggabungan dengan Artikel Unduh-Saja.

  • Artikel tidak dapat diterbitkan dalam publikasi gabungan dan publikasi transaksional dengan langganan pembaruan antrean.

  • Artikel yang disertakan dalam publikasi transaksional yang mendukung pembaruan langganan tidak dapat diterbitkan ulang.

  • Jika artikel diterbitkan dalam lebih dari satu publikasi transaksional yang mendukung pembaruan langganan antrean, properti berikut harus memiliki nilai yang sama untuk artikel 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 artikel diterbitkan dalam lebih dari satu publikasi gabungan, properti berikut harus memiliki nilai yang sama untuk artikel di semua publikasi:

    Properti Parameter dalam sp_addmergearticle
    Pelacakan kolom @column_tracking
    Opsi skema @schema_option
    Pemfilteran kolom @vertical_partition
    Opsi unggahan pelanggan @subscriber_upload_options
    Pelacakan penghapusan bersyar @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 penggabungan yang tidak difilter mendukung penerbitan tabel dalam beberapa publikasi lalu berlangganan dalam satu tabel dalam database langganan (biasanya disebut sebagai skenario gulung balik). Roll up sering digunakan untuk menggabungkan subset data dari beberapa lokasi dalam satu tabel di Pelanggan pusat. Publikasi gabungan yang difilter tidak mendukung skenario Pelanggan pusat. Untuk replikasi penggabungan, roll up biasanya diimplementasikan melalui satu publikasi dengan filter baris berparameter. Untuk informasi selengkapnya, lihat Filter Baris Berparameter.