sp_changepublication (T-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

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

Konvensi sintaks transact-SQL

Sintaks

sp_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

Argumen

[ @publication = ] 'publication' Adalah nama publikasi. publikasi adalah sysname, dengan default NULL.

[ @property = ] 'property' Adalah properti publikasi yang akan diubah. properti adalah nvarchar(255).

[ @value = ] 'value' Adalah nilai properti baru. nilainya adalah nvarchar(255), dengan default NULL.

Tabel ini menjelaskan properti publikasi yang dapat diubah dan pembatasan nilai untuk properti tersebut.

Properti Nilai Keterangan
allow_anonymous benar Langganan anonim dapat dibuat untuk publikasi yang diberikan, dan immediate_sync juga harus benar. Tidak dapat diubah untuk publikasi peer-to-peer.
salah Langganan anonim tidak dapat dibuat untuk publikasi yang diberikan. Tidak dapat diubah untuk publikasi peer-to-peer.
allow_initialize_from_backup benar Pelanggan dapat menginisialisasi langganan ke publikasi ini dari cadangan daripada rekam jepret awal. Properti ini tidak dapat diubah untuk publikasi non-Microsoft SQL Server.
salah Pelanggan harus menggunakan rekam jepret awal. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
allow_partition_switch benar UBAH TABEL... Pernyataan SWITCH dapat dijalankan terhadap database yang diterbitkan. Untuk informasi selengkapnya, lihat Mereplikasi Tabel dan Indeks yang Dipartisi.
salah UBAH TABEL... Pernyataan SWITCH tidak dapat dijalankan terhadap database yang diterbitkan.
allow_pull benar Langganan penarikan diizinkan untuk publikasi yang diberikan. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
salah Langganan penarikan tidak diizinkan untuk publikasi yang diberikan. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
allow_push benar Langganan push diizinkan untuk publikasi yang diberikan.
salah Langganan push tidak diizinkan untuk publikasi yang diberikan.
allow_subscription_copy benar Memungkinkan kemampuan untuk menyalin database yang berlangganan publikasi ini. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
salah Menonaktifkan kemampuan untuk menyalin database yang berlangganan publikasi ini. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
alt_snapshot_folder Lokasi folder alternatif untuk rekam jepret.
centralized_conflicts benar Rekaman konflik disimpan di Publisher. Dapat diubah hanya jika tidak ada langganan aktif. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
salah Rekaman konflik disimpan di Penerbit dan di Pelanggan yang menyebabkan konflik. Dapat diubah hanya jika tidak ada langganan aktif. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
compress_snapshot benar Rekam jepret dalam folder rekam jepret alternatif dikompresi ke dalam format file .cab. Rekam jepret di folder rekam jepret default tidak dapat dikompresi.
salah Rekam jepret tidak dikompresi, yang merupakan perilaku default untuk replikasi.
conflict_policy pub menang Kebijakan resolusi konflik untuk memperbarui Pelanggan di mana Penerbit memenangkan konflik. Properti ini hanya dapat diubah jika tidak ada langganan aktif. Tidak didukung untuk Oracle Publishers.
sub-reinit Untuk memperbarui Pelanggan, jika konflik terjadi, langganan harus diinisialisasi ulang. Properti ini hanya dapat diubah jika tidak ada langganan aktif. Tidak didukung untuk Oracle Publishers.
sub menang Kebijakan resolusi konflik untuk memperbarui Pelanggan di mana Pelanggan memenangkan konflik. Properti ini hanya dapat diubah jika tidak ada langganan aktif. Tidak didukung untuk Oracle Publishers.
conflict_retention int yang menentukan periode retensi konflik, dalam hari. Retensi default adalah 14 hari. 0 berarti tidak diperlukan pembersihan konflik. Tidak didukung untuk Oracle Publishers.
description Entri opsional yang menjelaskan publikasi.
enabled_for_het_sub benar Memungkinkan publikasi untuk mendukung Pelanggan non-SQL Server. enabled_for_het_sub tidak dapat diubah ketika ada langganan ke publikasi. Anda mungkin perlu menjalankan Prosedur Tersimpan Replikasi (Transact-SQL) untuk mematuhi persyaratan berikut sebelum mengatur enabled_for_het_sub ke true:
- allow_queued_tran harus salah.
- allow_sync_tran harus salah.
Mengubah enabled_for_het_sub ke true dapat mengubah pengaturan publikasi yang ada. Untuk informasi selengkapnya, lihat Pelanggan Non-SQL Server. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
salah Publikasi tidak mendukung Pelanggan non-SQL Server. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
enabled_for_internet benar Publikasi diaktifkan untuk Internet, dan Protokol Transfer File (FTP) dapat digunakan untuk mentransfer file rekam jepret ke pelanggan. File sinkronisasi untuk publikasi dimasukkan ke dalam direktori berikut: C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address tidak boleh NULL. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
salah Publikasi tidak diaktifkan untuk Internet. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
enabled_for_p2p benar Publikasi mendukung replikasi peer-to-peer. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
Untuk mengatur enabled_for_p2p ke true, pembatasan berikut berlaku:
- allow_anonymous harus false
- allow_dts harus salah.
- allow_initialize_from_backup harus benar
- allow_queued_tran harus salah.
- allow_sync_tran harus salah.
- enabled_for_het_sub harus salah.
- independent_agent harus benar.
- repl_freq harus berkelanjutan.
- replicate_ddl harus 1.
salah Publikasi tidak mendukung replikasi peer-to-peer. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
ftp_address Lokasi file rekam jepret publikasi yang dapat diakses FTP. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
ftp_login Nama pengguna yang digunakan untuk menyambungkan ke layanan FTP, dan nilai ANONIM diizinkan. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
ftp_password Kata sandi untuk nama pengguna yang digunakan untuk menyambungkan ke layanan FTP. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
ftp_port Nomor port layanan FTP untuk Distributor. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
ftp_subdirectory Menentukan tempat file rekam jepret dibuat jika publikasi mendukung penyebaran rekam jepret menggunakan FTP. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
immediate_sync benar File sinkronisasi untuk publikasi dibuat atau dibuat ulang setiap kali Agen Rekam Jepret berjalan. Pelanggan dapat menerima file sinkronisasi segera setelah langganan jika Agen Snapshot telah selesai sekali sebelum langganan. Langganan baru mendapatkan file sinkronisasi terbaru yang dihasilkan oleh eksekusi terbaru Agen Rekam Jepret. independent_agent juga harus benar. Lihat keterangan di bawah ini untuk informasi tambahan tentang immediate_sync.
salah File sinkronisasi dibuat hanya jika ada langganan baru. Pelanggan tidak dapat menerima file sinkronisasi setelah langganan hingga Agen Rekam Jepret dimulai dan selesai.
independent_agent benar Publikasi memiliki Agen Distribusi khusus sendiri.
salah Publikasi menggunakan Agen Distribusi bersama, dan setiap pasangan database publikasi/langganan memiliki agen bersama.
p2p_continue_onconflict benar Agen Distribusi terus memproses perubahan ketika konflik terdeteksi.
Perhatian: Kami sarankan Anda menggunakan nilai default .FALSE Ketika opsi ini diatur ke TRUE, Agen Distribusi mencoba menyatukan data dalam topologi dengan menerapkan baris yang bertentangan dari simpul yang memiliki ID pencetus tertinggi. Metode ini tidak menjamin konvergensi. Anda harus memastikan bahwa topologi konsisten setelah konflik terdeteksi. Untuk informasi selengkapnya, lihat "Menangani Konflik" dalam Deteksi Konflik di Replikasi Peer-to-Peer.
salah Agen Distribusi berhenti memproses perubahan ketika konflik terdeteksi.
post_snapshot_script Menentukan lokasi file skrip Transact-SQL yang dijalankan Agen Distribusi setelah semua skrip objek dan data lain yang direplikasi telah diterapkan selama sinkronisasi awal.
pre_snapshot_script Menentukan lokasi file skrip Transact-SQL yang dijalankan Agen Distribusi sebelum semua skrip objek dan data lain yang direplikasi telah diterapkan selama sinkronisasi awal.
publish_to_ActiveDirectory benar Parameter ini tidak digunakan lagi dan hanya didukung untuk kompatibilitas skrip mundur. Anda tidak dapat lagi menambahkan informasi publikasi ke Microsoft Active Directory.
salah Menghapus informasi publikasi dari Direktori Aktif.
queue_type Sql Gunakan SQL Server untuk menyimpan transaksi. Properti ini hanya dapat diubah jika tidak ada langganan aktif.

Catatan: Dukungan untuk menggunakan Antrean Pesan Microsoft telah dihentikan. Menentukan nilai msmq untuk nilai menghasilkan kesalahan.
redirected_publisher Nama pendengar grup ketersediaan. Digunakan dalam replikasi peer-to-peer saat rekan berada dalam grup ketersediaan. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. Diperkenalkan di SQL Server 2019 (15.x) CU 13. Untuk informasi tambahan, lihat Mengonfigurasi satu peer sebagai bagian dari grup ketersediaan atau Mengonfigurasi kedua rekan dalam grup ketersediaan.
repl_freq berkelanjutan Menerbitkan output semua transaksi berbasis log.
snapshot Menerbitkan hanya peristiwa sinkronisasi terjadwal.
replicate_ddl 1 Pernyataan bahasa definisi data (DDL) yang dijalankan di penerbit direplikasi. Properti ini tidak dapat diubah untuk publikasi non-SQL Server.
0 Pernyataan DDL tidak direplikasi. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. Replikasi perubahan skema tidak dapat dinonaktifkan saat menggunakan replikasi peer-to-peer.
replicate_partition_switch benar UBAH TABEL... Pernyataan SWITCH yang dijalankan terhadap database yang diterbitkan harus direplikasi ke Pelanggan. Opsi ini hanya valid jika allow_partition_switch diatur ke TRUE. Untuk informasi selengkapnya, lihat Mereplikasi Tabel dan Indeks yang Dipartisi.
salah UBAH TABEL... Pernyataan SWITCH tidak boleh direplikasi ke Pelanggan.
Penyimpanan int mewakili periode retensi, dalam jam, untuk aktivitas langganan. Jika langganan tidak aktif dalam periode retensi, langganan akan dihapus.
snapshot_in_defaultfolder benar File rekam jepret disimpan di folder rekam jepret default. Jika alt_snapshot_folderjuga ditentukan, file rekam jepret disimpan di lokasi default dan alternatif.
salah File rekam jepret disimpan di lokasi alternatif yang ditentukan oleh alt_snapshot_folder.
status active Data publikasi tersedia untuk Pelanggan segera saat publikasi dibuat. Tidak didukung untuk Oracle Publishers.
Aktif Data publikasi tidak tersedia untuk Pelanggan saat publikasi dibuat. Tidak didukung untuk Oracle Publishers.
sync_method asli Menggunakan output salinan massal mode asli dari semua tabel saat menyinkronkan langganan.
Karakter Menggunakan output salinan massal mode karakter dari semua tabel saat menyinkronkan langganan.
Bersamaan Menggunakan output program salinan massal mode asli dari semua tabel, tetapi tidak mengunci tabel selama proses pembuatan rekam jepret. Tidak valid untuk replikasi rekam jepret.
concurrent_c Menggunakan output program salin massal mode karakter dari semua tabel, tetapi tidak mengunci tabel selama proses pembuatan rekam jepret. Tidak valid untuk replikasi rekam jepret.
taskid Properti ini tidak digunakan lagi dan tidak lagi didukung.
allow_drop benar DROP TABLE Mengaktifkan dukungan DLL untuk artikel yang merupakan bagian dari replikasi transaksional. Versi minimum yang didukung: SQL Server 2014 (12.x) Paket Layanan 2 atau lebih tinggi dan Paket Layanan SQL Server 2016 (13.x) 1 atau lebih tinggi. Referensi tambahan: KB 3170123
salah DROP TABLE Menonaktifkan dukungan DLL untuk artikel yang merupakan bagian dari replikasi transaksional. Ini adalah nilai default untuk properti ini.
NULL (default) Mengembalikan daftar nilai yang didukung untuk properti.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot Mengakui bahwa tindakan yang diambil oleh prosedur tersimpan ini dapat membatalkan rekam jepret yang ada. force_invalidate_snapshot sedikit, dengan default 0.

  • 0 menentukan bahwa perubahan pada artikel tidak menyebabkan rekam jepret tidak valid. Jika prosedur tersimpan mendeteksi bahwa perubahan memang memerlukan rekam jepret baru, kesalahan terjadi dan tidak ada perubahan yang dilakukan.
  • 1 menentukan bahwa perubahan pada artikel dapat menyebabkan rekam jepret tidak valid. Jika ada langganan yang memerlukan rekam jepret baru, nilai ini memberikan izin agar rekam jepret yang ada ditandai sebagai usang dan rekam jepret baru dihasilkan.
    Lihat bagian Keterangan untuk properti yang, saat diubah, memerlukan pembuatan rekam jepret baru.

[@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 sedikit dengan default 0.

  • 0 menentukan bahwa perubahan pada artikel tidak menyebabkan langganan diinisialisasi ulang. Jika prosedur tersimpan mendeteksi bahwa perubahan akan mengharuskan langganan yang ada diinisialisasi ulang, kesalahan terjadi dan tidak ada perubahan yang dilakukan.
  • 1 menentukan bahwa perubahan pada artikel menyebabkan langganan yang ada diinisialisasi ulang, dan memberikan izin untuk reinisialisasi langganan terjadi.

[ @publisher = ] 'publisher' Menentukan Penerbit non-SQL Server. publisher adalah sysname, dengan default NULL.

Catatan

publisher tidak boleh digunakan saat mengubah properti artikel pada Penerbit SQL Server.

Mengembalikan Nilai Kode

0 (berhasil) atau 1 (kegagalan)

Keterangan

sp_changepublication digunakan dalam replikasi rekam jepret dan replikasi transaksional.

Setelah mengubah salah satu properti berikut, Anda harus membuat rekam jepret baru, dan Anda harus menentukan nilai 1 untuk parameter force_invalidate_snapshot .

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

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

Dampak sinkronisasi langsung

Saat sinkronisasi langsung aktif, semua perubahan dalam log dilacak segera setelah rekam jepret awal dihasilkan bahkan jika tidak ada langganan. Perubahan yang dicatat digunakan saat pelanggan menggunakan cadangan untuk menambahkan simpul serekan baru. Setelah cadangan dipulihkan, serekan disinkronkan dengan perubahan lain yang terjadi setelah cadangan diambil. Karena perintah dilacak dalam database distribusi, logika sinkronisasi dapat melihat LSN yang dicadangkan terakhir dan menggunakan ini sebagai titik awal, mengetahui bahwa perintah tersedia jika cadangan diambil dalam periode retensi maksimum. (Nilai default untuk periode retensi min adalah 0 jam dan periode retensi maks adalah 24 jam.)

Ketika sinkronisasi segera nonaktif, perubahan disimpan setidaknya periode retensi min dan segera dibersihkan untuk semua transaksi yang sudah direplikasi. Jika sinkronisasi langsung nonaktif dan dikonfigurasi dengan periode retensi default, kemungkinan perubahan yang diperlukan setelah pencadangan diambil dibersihkan dan simpul serekan baru tidak akan diinisialisasi dengan benar. Satu-satunya opsi yang tersisa adalah menghentikan topologi. Mengatur sinkronisasi langsung ke aktif memberikan fleksibilitas yang lebih besar dan merupakan pengaturan yang direkomendasikan untuk replikasi P2P.

Contoh

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Izin

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

Lihat Juga

Menampilkan dan Mengubah Properti Publikasi
Mengubah Properti Publikasi dan Artikel
sp_addpublication (T-SQL)
sp_droppublication (T-SQL)
sp_helppublication (T-SQL)
Prosedur Tersimpan Replikasi (Transact-SQL)