sp_changemergepublication (T-SQL)

Berlaku untuk:SQL Server

Mengubah properti publikasi gabungan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.

Konvensi sintaks transact-SQL

Sintaks

sp_changemergepublication
    [ @publication = ] N'publication'
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

Argumen

[ @publication = ] N'publikasi'

Nama publikasi. @publication adalah sysname, tanpa default.

[ @property = ] N'property'

Properti yang akan diubah untuk publikasi yang diberikan. @property adalah sysname, dan bisa menjadi salah satu nilai yang tercantum dalam tabel berikut ini.

[ @value = ] N'value'

Nilai baru untuk properti yang ditentukan. @value adalah nvarchar(255), dengan default NULL.

, dan bisa menjadi salah satu nilai yang tercantum dalam tabel berikut ini.

Tabel ini menjelaskan properti publikasi yang dapat diubah, dan menjelaskan batasan pada nilai untuk properti tersebut.

Properti Nilai Deskripsi
allow_anonymous true Langganan anonim diizinkan.
false Langganan anonim tidak diizinkan.
allow_partition_realignment true Penghapusan dikirim ke Pelanggan untuk mencerminkan hasil perubahan partisi dengan menghapus data yang bukan lagi bagian dari partisi Pelanggan. Ini adalah perilaku default.
false Data dari partisi lama dibiarkan di Pelanggan, di mana perubahan yang dilakukan pada data ini pada Penerbit tidak direplikasi ke Pelanggan ini. Sebagai gantinya, perubahan yang dilakukan pada Pelanggan mereplikasi ke Penerbit. Ini digunakan untuk menyimpan data dalam langganan dari partisi lama ketika data harus dapat diakses untuk tujuan historis.
allow_pull true Langganan penarikan diizinkan untuk publikasi yang diberikan.
false Langganan penarikan tidak diizinkan untuk publikasi yang diberikan.
allow_push true Langganan push diizinkan untuk publikasi yang diberikan.
false Langganan push tidak diizinkan untuk publikasi yang diberikan.
allow_subscriber_initiated_snapshot true Pelanggan dapat memulai proses rekam jepret.
false Pelanggan tidak dapat memulai proses rekam jepret.
allow_subscription_copy true Anda dapat menyalin database langganan yang berlangganan publikasi ini.
false Anda tidak dapat menyalin database langganan yang berlangganan publikasi ini.
allow_synctoalternate true Memungkinkan mitra sinkronisasi alternatif untuk disinkronkan dengan Publisher ini.
false Tidak mengizinkan mitra sinkronisasi alternatif untuk disinkronkan dengan Publisher ini.
allow_web_synchronization true Langganan dapat disinkronkan melalui HTTPS.
false Langganan tidak dapat disinkronkan melalui HTTPS.
alt_snapshot_folder Menentukan lokasi folder alternatif untuk rekam jepret.
automatic_reinitialization_policy 1 Perubahan diunggah dari Pelanggan sebelum langganan diinisialisasi ulang.
0 Langganan diinisialisasi ulang tanpa terlebih dahulu mengunggah perubahan.
centralized_conflicts true Semua rekaman konflik disimpan di Publisher. Jika Anda mengubah properti ini, Pelanggan yang ada harus diinisialisasi ulang.
false Rekaman konflik disimpan di server yang hilang dalam resolusi konflik. Jika Anda mengubah properti ini, Pelanggan yang ada harus diinisialisasi ulang.
compress_snapshot true Rekam jepret dalam folder rekam jepret alternatif dikompresi ke dalam format CAB. Rekam jepret di folder rekam jepret default tidak dapat dikompresi. Mengubah properti ini memerlukan rekam jepret baru.
false Secara default, rekam jepret tidak dikompresi. Mengubah properti ini memerlukan rekam jepret baru.
conflict_logging publisher Rekaman konflik disimpan di Publisher.
subscriber Rekaman konflik disimpan di Pelanggan yang menyebabkan konflik. Tidak didukung untuk Pelanggan Ringkas SQL Server.
both Rekaman konflik disimpan di Penerbit dan Pelanggan.
conflict_retention Int yang menentukan periode retensi, dalam hari, yang konfliknya dipertahankan. Pengaturan conflict_retention ke 0 berarti tidak diperlukan pembersihan konflik.
description Deskripsi publikasi.
dynamic_filters true Publikasi difilter berdasarkan klausa dinamis.
false Publikasi tidak difilter secara dinamis.
enabled_for_internet true Publikasi diaktifkan untuk Internet. Protokol Transfer File (FTP) dapat digunakan untuk mentransfer file rekam jepret ke Pelanggan. File sinkronisasi untuk publikasi dimasukkan ke C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp dalam direktori.
false Publikasi tidak diaktifkan untuk Internet.
ftp_address Alamat jaringan layanan FTP untuk Distributor. Menentukan tempat file rekam jepret publikasi disimpan.
ftp_login Nama pengguna yang digunakan untuk menyambungkan ke layanan FTP.
ftp_password Kata sandi pengguna yang digunakan untuk menyambungkan ke layanan FTP.
ftp_port Nomor port layanan FTP untuk Distributor. Menentukan nomor port TCP dari situs FTP tempat file rekam jepret publikasi disimpan.
ftp_subdirectory Menentukan tempat file rekam jepret dibuat jika publikasi mendukung penyebaran rekam jepret dengan menggunakan FTP.
generation_leveling_threshold int Menentukan jumlah perubahan yang terkandung dalam satu generasi. Generasi adalah kumpulan perubahan yang dikirimkan ke Penerbit atau Pelanggan.
keep_partition_changes true Sinkronisasi dioptimalkan, dan hanya Pelanggan yang memiliki baris dalam partisi yang diubah yang terpengaruh. Mengubah properti ini memerlukan rekam jepret baru.
false Sinkronisasi tidak dioptimalkan, dan partisi yang dikirim ke Pelanggan diverifikasi saat data berubah dalam partisi. Mengubah properti ini memerlukan rekam jepret baru.
max_concurrent_merge Int yang menunjukkan jumlah maksimum proses penggabungan bersamaan yang dapat dijalankan terhadap publikasi. Jika 0, tidak ada batasan. Jika lebih dari jumlah proses penggabungan ini dijadwalkan untuk berjalan pada saat yang sama, pekerjaan berlebih dimasukkan ke dalam antrean hingga proses currentlmerge selesai.
max_concurrent_dynamic_snapshots Int yang mewakili jumlah maksimum sesi rekam jepret untuk menghasilkan rekam jepret data terfilter yang dapat dijalankan secara bersamaan terhadap publikasi gabungan yang menggunakan filter baris berparameter. Jika 0, tidak ada batasan. Jika lebih dari jumlah proses rekam jepret ini dijadwalkan untuk dijalankan pada saat yang sama, pekerjaan berlebih dimasukkan ke dalam antrean hingga proses penggabungan saat ini selesai.
post_snapshot_script Menentukan penunjuk ke .sql lokasi file. Agen Distribusi atau Agen Penggabungan menjalankan skrip pasca-rekam jepret setelah semua skrip objek dan data lain yang direplikasi telah diterapkan selama sinkronisasi awal. Mengubah properti ini memerlukan rekam jepret baru.
pre_snapshot_script Menentukan penunjuk ke .sql lokasi file. Agen Penggabungan menjalankan skrip pra-rekam jepret sebelum salah satu skrip objek yang direplikasi saat menerapkan rekam jepret pada Pelanggan. Mengubah properti ini memerlukan rekam jepret baru.
publication_compatibility_level 100RTM SQL Server 2008 (10.0.x)
90RTM SQL Server 2005 (9.x)
publish_to_activedirectory true Parameter ini tidak digunakan lagi dan dipertahankan untuk kompatibilitas skrip mundur. Anda tidak dapat lagi menambahkan informasi publikasi ke Direktori Aktif.
false Menghapus informasi publikasi dari Direktori Aktif.
replicate_ddl 1 Pernyataan Data Definition Language (DDL) yang dijalankan di Publisher direplikasi.
0 Pernyataan DDL tidak direplikasi.
retention Int yang menunjukkan jumlah retention_period_unit unit untuk menyimpan perubahan untuk publikasi yang diberikan. Jika langganan tidak disinkronkan dalam periode retensi, dan perubahan tertunda yang diterimanya dihapus oleh operasi pembersihan di Distributor, langganan kedaluwarsa dan harus diinisialisasi ulang. Periode retensi maksimum yang diizinkan adalah jumlah hari antara 31 Desember 9999, dan tanggal saat ini.

Catatan: Periode retensi untuk publikasi penggabungan memiliki masa tenggang 24 jam untuk mengakomodasi Pelanggan di zona waktu yang berbeda.
retention_period_unit day Periode retensi ditentukan dalam hari.
week Periode retensi ditentukan dalam beberapa minggu.
month Periode retensi ditentukan dalam bulan.
year Periode retensi ditentukan dalam tahun.
snapshot_in_defaultfolder true File rekam jepret disimpan di folder rekam jepret default.
false File rekam jepret disimpan di lokasi alternatif yang ditentukan oleh alt_snapshot_folder. Kombinasi ini menentukan bahwa file rekam jepret disimpan di lokasi default dan alternatif.
snapshot_ready true Rekam jepret untuk publikasi tersedia.
false Rekam jepret untuk publikasi tidak tersedia.
status active Publikasi dalam status aktif.
inactive Publikasi dalam status tidak aktif.
sync_mode native atau

bcp native
Output program penyalinan massal mode asli dari semua tabel digunakan untuk rekam jepret awal.
character

atau bcp character
Output program penyalinan massal mode karakter dari semua tabel digunakan untuk rekam jepret awal, yang diperlukan untuk semua Pelanggan non-SQL Server.
use_partition_groups

Catatan: Setelah menggunakan grup partisi, jika Anda kembali menggunakan setupbelongs, dan diatur use_partition_groups=false dalam changemergearticle, ini mungkin tidak tercermin dengan benar setelah rekam jepret diambil. Pemicu yang dihasilkan oleh rekam jepret mematuhi grup partisi.

Solusi untuk skenario ini adalah mengatur status ke Tidak Aktif, mengubah use_partition_groups, lalu mengatur status ke Aktif.
true Publikasi menggunakan partisi yang telah dikomputasi sebelumnya.
false Publikasi tidak menggunakan partisi yang telah dikomputasi sebelumnya.
validate_subscriber_info Mencantumkan fungsi yang digunakan untuk mengambil informasi Pelanggan. Kemudian, memvalidasi kriteria pemfilteran dinamis yang digunakan untuk Pelanggan untuk memverifikasi bahwa informasi dipartisi secara konsisten.
web_synchronization_url Nilai default URL Internet yang digunakan untuk sinkronisasi Web.
NULL (default) Mengembalikan daftar nilai yang didukung untuk @property.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Mengakui bahwa tindakan yang diambil oleh prosedur tersimpan ini mungkin membatalkan rekam jepret yang ada. @force_invalidate_snapshot adalah bit, dengan default 0.

  • 0 menentukan bahwa mengubah publikasi tidak membatalkan rekam jepret. Jika prosedur tersimpan mendeteksi bahwa perubahan memang memerlukan rekam jepret baru, kesalahan terjadi dan tidak ada perubahan yang dilakukan.

  • 1 menentukan bahwa mengubah publikasi mungkin membatalkan rekam jepret. Jika ada langganan yang memerlukan rekam jepret baru, memberikan izin agar rekam jepret yang ada ditandai sebagai usang dan agar rekam jepret baru dibuat.

Lihat bagian Keterangan untuk properti yang, saat diubah, memerlukan rekam jepret baru untuk dibuat.

[ @force_reinit_subscription = ] force_reinit_subscription

Mengakui bahwa tindakan yang diambil oleh prosedur tersimpan ini mungkin mengharuskan langganan yang ada untuk diinisialisasi ulang. @force_reinit_subscription adalah bit, dengan default 0.

  • 0 menentukan bahwa mengubah publikasi tidak mengharuskan langganan diinisialisasi ulang. Jika prosedur tersimpan mendeteksi bahwa perubahan mengharuskan langganan yang ada diinisialisasi ulang, kesalahan terjadi dan tidak ada perubahan yang dilakukan.

  • 1 berarti bahwa perubahan pada publikasi menginisialisasi ulang langganan yang ada, dan memberikan izin agar reinisialisasi langganan terjadi.

Lihat bagian Keterangan untuk properti yang, saat diubah, mengharuskan semua langganan yang ada diinisialisasi ulang.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

sp_changemergepublication digunakan dalam replikasi penggabungan.

Mengubah properti berikut mengharuskan rekam jepret baru dibuat. Anda harus menentukan nilai 1 untuk parameter @force_invalidate_snapshot .

  • alt_snapshot_folder
  • compress_snapshot
  • dynamic_filters
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • publication_compatibility_level (hanya untuk 80SP3 )
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode
  • use_partition_groups

Mengubah properti berikut mengharuskan langganan yang ada diinisialisasi ulang. Anda harus menentukan nilai 1 untuk parameter @force_reinit_subscription .

  • dynamic_filters
  • validate_subscriber_info

Untuk mencantumkan objek publikasi ke Direktori Aktif dengan menggunakan publish_to_active_directory, objek SQL Server harus sudah dibuat di Direktori Aktif.

Contoh

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

Izin

Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_changemergepublication.