sp_changepublication (T-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Mengubah properti publikasi. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.
Sintaks
sp_changepublication
[ [ @publication = ] N'publication' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumen
[ @publication = ] N'publikasi'
Nama publikasi. @publication adalah sysname, dengan default NULL
.
[ @property = ] N'property'
Properti publikasi yang akan diubah. @property adalah nvarchar(255), dengan default NULL
.
[ @value = ] N'value'
Nilai properti baru. @value adalah nvarchar(255), dengan default NULL
.
Tabel ini menjelaskan properti publikasi yang dapat diubah dan pembatasan nilai untuk properti tersebut.
Properti | Nilai | Deskripsi |
---|---|---|
allow_anonymous |
true |
Langganan anonim dapat dibuat untuk publikasi yang diberikan, dan immediate_sync juga harus true . Tidak dapat diubah untuk publikasi peer-to-peer. |
false |
Langganan anonim tidak dapat dibuat untuk publikasi yang diberikan. Tidak dapat diubah untuk publikasi peer-to-peer. | |
allow_initialize_from_backup |
true |
Pelanggan dapat menginisialisasi langganan ke publikasi ini dari cadangan daripada rekam jepret awal. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. |
false |
Pelanggan harus menggunakan rekam jepret awal. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. | |
allow_partition_switch |
true |
ALTER TABLE...SWITCH pernyataan dapat dijalankan terhadap database yang diterbitkan. Untuk informasi selengkapnya, lihat Mereplikasi Tabel dan Indeks yang Dipartisi. |
false |
ALTER TABLE...SWITCH pernyataan tidak dapat dijalankan terhadap database yang diterbitkan. |
|
allow_pull |
true |
Langganan penarikan diizinkan untuk publikasi yang diberikan. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. |
false |
Langganan penarikan tidak diizinkan untuk publikasi yang diberikan. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. | |
allow_push |
true |
Langganan push diizinkan untuk publikasi yang diberikan. |
false |
Langganan push tidak diizinkan untuk publikasi yang diberikan. | |
allow_subscription_copy |
true |
Memungkinkan kemampuan untuk menyalin database yang berlangganan publikasi ini. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. |
false |
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 |
true |
Rekaman konflik disimpan di Publisher. Dapat diubah hanya jika tidak ada langganan aktif. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. |
false |
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 |
true |
Rekam jepret dalam folder rekam jepret alternatif dikompresi ke dalam format file .cab. Rekam jepret di folder rekam jepret default tidak dapat dikompresi. |
false |
Rekam jepret tidak dikompresi, yang merupakan perilaku default untuk replikasi. | |
conflict_policy |
pub wins |
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 wins |
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 |
Nilai 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 |
true |
Memungkinkan publikasi untuk mendukung Pelanggan non-SQL Server. enabled_for_het_sub tidak dapat diubah saat ada langganan ke publikasi. Anda mungkin perlu menjalankan sp_changepublication untuk mematuhi persyaratan berikut sebelum mengatur enabled_for_het_sub ke true:- allow_queued_tran harus merupakan false .- allow_sync_tran harus merupakan false .Mengubah enabled_for_het_sub ke true mungkin mengubah pengaturan publikasi yang ada. Untuk informasi selengkapnya, lihat Pelanggan Non-SQL Server. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. |
false |
Publikasi tidak mendukung Pelanggan non-SQL Server. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. | |
enabled_for_internet |
true |
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. |
false |
Publikasi tidak diaktifkan untuk Internet. Properti ini tidak dapat diubah untuk publikasi non-SQL Server. | |
enabled_for_p2p |
true |
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 merupakan false .- allow_initialize_from_backup harus true - allow_queued_tran harus merupakan false .- allow_sync_tran harus merupakan false .- enabled_for_het_sub harus merupakan false .- independent_agent harus merupakan true .- repl_freq harus merupakan continuous .- replicate_ddl harus merupakan 1 . |
false |
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 nilainya anonymous 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 |
true |
File sinkronisasi untuk publikasi dibuat atau dibuat ulang setiap kali Agen Rekam Jepret berjalan. Pelanggan dapat menerima file sinkronisasi segera setelah langganan, jika Agen Rekam Jepret selesai sekali sebelum langganan. Langganan baru mendapatkan file sinkronisasi terbaru yang dihasilkan oleh eksekusi terbaru Agen Rekam Jepret. independent_agent juga harus true . Untuk informasi selengkapnya, lihat Efek sinkronisasi langsung. |
false |
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 |
true |
Publikasi memiliki Agen Distribusi khusus sendiri. |
false |
Publikasi menggunakan Agen Distribusi bersama, dan setiap pasangan database publikasi/langganan memiliki agen bersama. | |
p2p_continue_onconflict |
true |
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 merupakan ID pencetus tertinggi. Metode ini tidak menjamin konvergensi. Anda harus memastikan bahwa topologi konsisten setelah konflik terdeteksi. Untuk informasi selengkapnya, lihat "Menangani Konflik" di Peer-to-Peer - Deteksi Konflik di Replikasi Peer-to-Peer. |
false |
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 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 diterapkan selama sinkronisasi awal. | |
publish_to_ActiveDirectory |
true |
Parameter ini tidak digunakan lagi dan hanya didukung untuk kompatibilitas skrip mundur. Anda tidak dapat lagi menambahkan informasi publikasi ke Microsoft Active Directory. |
false |
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 dihentikan. Menentukan nilai msmq untuk @value 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 selengkapnya, lihat Mengonfigurasi satu peer sebagai bagian dari grup ketersediaan atau Mengonfigurasi kedua rekan dalam grup ketersediaan. | |
repl_freq |
continuous |
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 |
true |
ALTER TABLE...SWITCH pernyataan 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. |
false |
ALTER TABLE...SWITCH pernyataan tidak boleh direplikasi ke Pelanggan. |
|
retention |
int mewakili periode retensi, dalam jam, untuk aktivitas langganan. Jika langganan tidak aktif dalam periode retensi, langganan akan dihapus. | |
snapshot_in_defaultfolder |
true |
File rekam jepret disimpan di folder rekam jepret default. Jika alt_snapshot_folder juga ditentukan, file rekam jepret disimpan di lokasi default dan alternatif. |
false |
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. |
inactive |
Data publikasi tidak tersedia untuk Pelanggan saat publikasi dibuat. Tidak didukung untuk Oracle Publishers. | |
sync_method |
native |
Menggunakan output salinan massal mode asli dari semua tabel saat menyinkronkan langganan. |
character |
Menggunakan output salinan massal mode karakter dari semua tabel saat menyinkronkan langganan. | |
concurrent |
Menggunakan output program penyalinan 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 |
true |
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. Untuk informasi selengkapnya, lihat KB 3170123 |
false (default) |
DROP TABLE Menonaktifkan dukungan DLL untuk artikel yang merupakan bagian dari replikasi transaksional. |
|
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 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 adalah bit, 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 reinitialisasi langganan terjadi.
[ @publisher = ] N'publisher'
Menentukan Penerbit Non-SQL Server. @publisher adalah sysname, dengan default NULL
.
@publisher tidak boleh digunakan saat mengubah properti artikel di 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 publish_to_active_directory
parameter , objek SQL Server harus sudah dibuat di Direktori Aktif.
Efek 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 minimum adalah 0 jam, dan periode retensi maksimum 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
.