sp_changemergearticle (T-SQL)
Berlaku untuk: SQL Server
Mengubah properti artikel penggabungan. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.
Sintaks
sp_changemergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Argumen
[ @publication = ] N'publikasi'
Nama publikasi tempat artikel ada. @publication adalah sysname, tanpa default.
[ @article = ] N'article'
Nama artikel yang akan diubah. @article adalah sysname, tanpa default.
[ @property = ] N'property'
Properti yang akan diubah untuk artikel dan publikasi yang diberikan. @property adalah sysname, dan bisa menjadi salah satu nilai yang tercantum dalam tabel berikut.
[ @value = ] N'value'
Nilai baru untuk properti yang ditentukan. @value adalah nvarchar(2000), dan bisa menjadi salah satu nilai yang tercantum dalam tabel berikut.
Tabel ini menjelaskan properti artikel dan nilai untuk properti tersebut.
Properti | Nilai | Deskripsi |
---|---|---|
allow_interactive_resolver |
true |
Mengaktifkan penggunaan resolver interaktif untuk artikel. |
false |
Menonaktifkan penggunaan resolver interaktif untuk artikel. | |
article_resolver |
Penyelesai kustom untuk artikel. Hanya berlaku untuk artikel tabel. | |
check_permissions (bitmap) |
0x00 |
Izin tingkat tabel tidak dicentang. |
0x10 |
Izin tingkat tabel dicentang di Penerbit sebelum pernyataan INSERT yang dibuat di Pelanggan diterapkan di Penerbit. | |
0x20 |
Izin tingkat tabel dicentang di Penerbit sebelum pernyataan UPDATE yang dibuat di Pelanggan diterapkan di Penerbit. | |
0x40 |
Izin tingkat tabel dicentang di Penerbit sebelum pernyataan DELETE di Pelanggan diterapkan di Penerbit. | |
column_tracking |
true |
Mengaktifkan pelacakan tingkat kolom. Hanya berlaku untuk artikel tabel. Catatan: Pelacakan tingkat kolom tidak dapat digunakan saat menerbitkan tabel dengan lebih dari 246 kolom. |
false |
Menonaktifkan pelacakan tingkat kolom dan meninggalkan deteksi konflik di tingkat baris. Hanya berlaku untuk artikel tabel. | |
compensate_for_errors |
true |
Tindakan kompensasi dilakukan ketika kesalahan terjadi selama sinkronisasi. Untuk informasi selengkapnya, lihat sp_addmergearticle. |
false |
Mengkompensasi tindakan tidak dilakukan, yang merupakan perilaku default. Untuk informasi selengkapnya, lihat sp_addmergearticle. Penting: Meskipun data di baris yang terpengaruh mungkin tampak tidak konvergensi, segera setelah Anda mengatasi kesalahan apa pun, perubahan dapat diterapkan, dan data menyatu. Jika tabel sumber untuk artikel sudah diterbitkan di publikasi lain, maka nilainya compensate_for_errors harus sama untuk kedua artikel. |
|
creation_script |
Jalur dan nama skrip skema artikel opsional yang digunakan untuk membuat artikel di database langganan. | |
delete_tracking |
true |
Pernyataan DELETE direplikasi, yang merupakan perilaku default. |
false |
Pernyataan DELETE tidak direplikasi. Penting: Pengaturan delete_tracking untuk false menghasilkan non-konvergensi, dan baris yang dihapus perlu dihapus secara manual. |
|
description |
Entri deskriptif untuk artikel. | |
destination_owner |
Nama pemilik objek dalam database langganan, jika bukan dbo. | |
identity_range |
bigint yang menentukan ukuran rentang yang akan digunakan saat menetapkan nilai identitas baru jika artikel telah identityrangemanagementoption diatur ke auto atau auto_identity_range diatur ke true . Hanya berlaku untuk artikel tabel. Untuk informasi selengkapnya, lihat bagian "Gabungkan Replikasi" di Kolom Identitas Replikasi. |
|
identityrangemanagementoption |
manual |
Menonaktifkan manajemen rentang identitas otomatis. Menandai kolom identitas menggunakan NOT FOR REPLICATION untuk mengaktifkan penanganan rentang identitas manual. Untuk informasi selengkapnya, lihat Mereplikasi Kolom Identitas. |
none |
Menonaktifkan semua manajemen rentang identitas. | |
logical_record_level_conflict_detection |
true |
Konflik terdeteksi jika perubahan dilakukan di mana saja dalam catatan logis. Memerlukan yang logical_record_level_conflict_resolution diatur ke true . |
false |
Deteksi konflik default digunakan seperti yang ditentukan oleh column_tracking . |
|
logical_record_level_conflict_resolution |
true |
Seluruh rekor logis yang menang menimpa rekor logis yang kalah. |
false |
Baris yang menang tidak dibatasi ke catatan logis. | |
partition_options |
0 |
Pemfilteran untuk artikel bersifat statis atau tidak menghasilkan subset data unik untuk setiap partisi, yaitu partisi "tumpang tindih". |
1 |
Partisi tumpang tindih, dan pembaruan DML yang dibuat di Pelanggan tidak dapat mengubah partisi tempat baris berada. | |
2 |
Pemfilteran untuk artikel menghasilkan partisi yang tidak tumpang tindih, tetapi beberapa Pelanggan dapat menerima partisi yang sama. | |
3 |
Pemfilteran untuk artikel menghasilkan partisi yang tidak tumpang tindih yang unik untuk setiap langganan. Catatan: Jika Anda menentukan nilai 3 untuk partition_options , hanya ada satu langganan untuk setiap partisi data dalam artikel tersebut. Jika langganan kedua dibuat, di mana kriteria pemfilteran langganan baru diselesaikan ke partisi yang sama dengan langganan yang ada, langganan yang ada akan dihilangkan. |
|
pre_creation_command |
none |
Jika tabel sudah ada di Pelanggan, tidak ada tindakan yang diambil. |
delete |
Mengeluarkan penghapusan berdasarkan klausa WHERE di filter subset. | |
drop |
Menghilangkan tabel sebelum membuatnya kembali. | |
truncate |
Memotong tabel tujuan. | |
processing_order |
int yang menunjukkan urutan pemrosesan artikel dalam publikasi gabungan. | |
pub_identity_range |
bigint yang menentukan ukuran rentang yang dialokasikan untuk Pelanggan dengan langganan server jika artikel telah identityrangemanagementoption diatur ke auto atau auto_identity_range diatur ke true . Rentang identitas ini dicadangkan untuk pelanggan penerbitan ulang untuk dialokasikan ke Pelanggannya sendiri. Hanya berlaku untuk artikel tabel. Untuk informasi selengkapnya, lihat bagian "Gabungkan Replikasi" di Kolom Identitas Replikasi. |
|
published_in_tran_pub |
true |
Artikel juga diterbitkan dalam publikasi transaksi. |
false |
Artikel juga tidak diterbitkan dalam publikasi transaksi. | |
resolver_info |
Digunakan untuk menentukan informasi tambahan yang diperlukan oleh penyelesai kustom. Beberapa Pemecah Masalah Microsoft memerlukan kolom yang disediakan sebagai input ke pemecah masalah. resolver_info adalah nvarchar(255), dengan default NULL . Untuk informasi selengkapnya, lihat Konflik Replikasi Penggabungan Tingkat Lanjut - Pemecah Masalah Berbasis COM. |
|
schema_option (bitmap) |
Untuk informasi selengkapnya, lihat bagian Keterangan. | |
0x00 |
Menonaktifkan pembuatan skrip oleh Agen Rekam Jepret dan menggunakan skrip yang disediakan di creation_script . |
|
0x01 |
Menghasilkan skrip pembuatan objek (CREATE TABLE, CREATE PROCEDURE, dan sebagainya). | |
0x10 |
Menghasilkan indeks berkluster yang sesuai. | |
0x20 |
Mengonversi jenis data yang ditentukan pengguna ke jenis data dasar di Pelanggan. Opsi ini tidak dapat digunakan saat ada batasan CHECK atau DEFAULT pada kolom jenis yang ditentukan pengguna (UDT), jika kolom UDT adalah bagian dari kunci utama, atau jika kolom komputasi mereferensikan kolom UDT. | |
0x40 |
Menghasilkan indeks nonclustered yang sesuai. | |
0x80 |
Termasuk integritas referensial yang dinyatakan pada kunci primer. | |
0x100 |
Mereplikasi pemicu pengguna pada artikel tabel, jika ditentukan. | |
0x200 |
Mereplikasi batasan KUNCI ASING. Jika tabel yang direferensikan bukan bagian dari publikasi, semua batasan KUNCI ASING pada tabel yang diterbitkan tidak direplikasi. | |
0x400 |
Mereplikasi batasan CHECK. | |
0x800 |
Mereplikasi default. | |
0x1000 |
Mereplikasi kolatasi tingkat kolom. | |
0x2000 |
Mereplikasi properti yang diperluas yang terkait dengan objek sumber artikel yang diterbitkan. | |
0x4000 |
Mereplikasi kunci unik jika ditentukan pada artikel tabel. | |
0x8000 |
Menghasilkan pernyataan ALTER TABLE saat batasan pembuatan skrip. | |
0x10000 |
Mereplikasi batasan CHECK sebagai NOT FOR REPLICATION sehingga batasan tidak diberlakukan selama sinkronisasi. | |
0x20000 |
Mereplikasi batasan KUNCI ASING sebagai BUKAN UNTUK REPLIKASI sehingga batasan tidak diberlakukan selama sinkronisasi. | |
0x40000 |
Mereplikasi grup file yang terkait dengan tabel atau indeks yang dipartisi. | |
0x80000 |
Mereplikasi skema partisi untuk tabel yang dipartisi. | |
0x100000 |
Mereplikasi skema partisi untuk indeks yang dipartisi. | |
0x200000 |
Mereplikasi statistik tabel. | |
0x400000 |
Mereplikasi Pengikatan default | |
0x800000 |
Mereplikasi Pengikatan aturan | |
0x1000000 |
Mereplikasi indeks teks lengkap | |
0x2000000 |
Koleksi skema XML yang terikat ke kolom xml tidak direplikasi. | |
0x4000000 |
Mereplikasi indeks pada kolom xml . | |
0x8000000 |
Buat skema apa pun yang belum ada pada pelanggan. | |
0x10000000 |
Mengonversi kolom xml menjadi ntext pada Pelanggan. | |
0x20000000 |
Mengonversi jenis data objek besar (nvarchar(max), varchar(max), dan varbinary(max)) yang diperkenalkan di SQL Server 2005 (9.x) ke jenis data yang didukung pada SQL Server 2000 (8.x). | |
0x40000000 |
Mereplikasi izin. | |
0x80000000 |
Coba hilangkan dependensi ke objek apa pun yang bukan bagian dari publikasi. | |
0x100000000 |
Gunakan opsi ini untuk mereplikasi atribut FILESTREAM, jika ditentukan pada kolom varbinary(max ). Jangan tentukan opsi ini jika Anda mereplikasi tabel ke Pelanggan SQL Server 2005 (9.x). Mereplikasi tabel yang memiliki kolom FILESTREAM ke Pelanggan SQL Server 2000 (8.x) tidak didukung, terlepas dari bagaimana opsi skema ini diatur. Lihat opsi 0x800000000 terkait . |
|
0x200000000 |
Mengonversi jenis data tanggal dan waktu (tanggal, waktu, datetimeoffset, dan datetime2) yang diperkenalkan di SQL Server 2008 (10.0.x) ke jenis data yang didukung pada versi SQL Server sebelumnya. | |
0x400000000 |
Mereplikasi opsi kompresi untuk data dan indeks. Untuk informasi selengkapnya, lihat Pemadatan data. | |
0x800000000 |
Atur opsi ini untuk menyimpan data FILESTREAM pada grup filenya sendiri di Pelanggan. Jika opsi ini tidak diatur, data FILESTREAM disimpan di grup file default. Replikasi tidak membuat grup file; oleh karena itu, jika Anda mengatur opsi ini, Anda harus membuat grup file sebelum menerapkan rekam jepret di Pelanggan. Untuk informasi selengkapnya tentang cara membuat objek sebelum Anda menerapkan rekam jepret, lihat Menjalankan Skrip Sebelum dan Sesudah Rekam Jepret Diterapkan. Lihat opsi 0x100000000 terkait . |
|
0x1000000000 |
Mengonversi jenis yang ditentukan pengguna (UDT) common language runtime (CLR) menjadi varbinary(max) sehingga kolom jenis UDT dapat direplikasi ke Pelanggan yang menjalankan SQL Server 2005 (9.x). | |
0x2000000000 |
Mengonversi tipe data hierarkis ke varbinary(maks) sehingga kolom jenis hierarkiid dapat direplikasi ke Pelanggan yang menjalankan SQL Server 2005 (9.x). Untuk informasi selengkapnya tentang cara menggunakan kolom hierarkiid dalam tabel yang direplikasi, lihat referensi metode jenis data hierarki. | |
0x4000000000 |
Mereplikasi indeks yang difilter pada tabel. Untuk informasi selengkapnya tentang indeks yang difilter, lihat Membuat indeks yang difilter. | |
0x8000000000 |
Mengonversi jenis data geografi dan geometri menjadi varbinary(max) sehingga kolom jenis ini dapat direplikasi ke Pelanggan yang menjalankan SQL Server 2005 (9.x). | |
0x10000000000 |
Mereplikasi indeks pada kolom jenis geografi dan geometri. | |
NULL |
Sistem secara otomatis membuat opsi skema yang valid untuk artikel. | |
status |
active |
Skrip pemrosesan awal untuk menerbitkan tabel dijalankan. |
unsynced |
Skrip pemrosesan awal untuk menerbitkan tabel dijalankan lain kali Agen Rekam Jepret berjalan. | |
stream_blob_columns |
true |
Pengoptimalan aliran data digunakan saat mereplikasi kolom objek besar biner. Namun, fungsionalitas replikasi penggabungan tertentu, seperti rekaman logis, masih dapat mencegah pengoptimalan aliran digunakan. stream_blob_columns diatur ke true ketika FILESTREAM diaktifkan. Ini memungkinkan replikasi data FILESTREAM untuk berkinerja optimal dan mengurangi pemanfaatan memori. Untuk memaksa artikel tabel FILESTREAM agar tidak menggunakan streaming blob, atur stream_blob_columns ke false.Penting: Mengaktifkan pengoptimalan memori ini mungkin merusak performa Agen Penggabungan selama sinkronisasi. Opsi ini hanya boleh digunakan saat mereplikasi kolom yang berisi megabyte data. |
false |
Pengoptimalan tidak digunakan saat mereplikasi kolom objek besar biner. | |
subscriber_upload_options |
0 |
Tidak ada batasan pembaruan yang dilakukan pada Pelanggan dengan langganan klien; perubahan diunggah ke Publisher. Mengubah properti ini mungkin mengharuskan Pelanggan yang ada diinisialisasi ulang. |
1 |
Perubahan diizinkan di Pelanggan dengan langganan klien, tetapi tidak diunggah ke Publisher. | |
2 |
Perubahan tidak diizinkan di Pelanggan dengan langganan klien. | |
subset_filterclause |
Klausa WHERE yang menentukan pemfilteran horizontal. Hanya berlaku untuk artikel tabel. Penting: Untuk alasan performa, sebaiknya Anda tidak menerapkan fungsi ke nama kolom dalam klausa filter baris berparameter, seperti LEFT([MyColumn]) = SUSER_SNAME() . Jika Anda menggunakan HOST_NAME dalam klausa filter dan mengambil alih nilai HOST_NAME, Anda mungkin harus mengonversi jenis data dengan menggunakan CONVERT. Untuk informasi selengkapnya tentang praktik terbaik untuk kasus ini, lihat bagian "Mengganti nilai HOST_NAME() di Filter Berparameter - Filter Baris Berparameter. |
|
threshold |
Nilai persentase yang digunakan untuk Pelanggan yang menjalankan SQL Server Compact atau versi SQL Server yang lebih lama. threshold mengontrol saat Agen Penggabungan menetapkan rentang identitas baru. Ketika persentase nilai yang ditentukan dalam ambang digunakan, Agen Penggabungan membuat rentang identitas baru. Digunakan saat identityrangemanagementoption diatur ke auto atau auto_identity_range diatur ke true . Hanya berlaku untuk artikel tabel. Untuk informasi selengkapnya, lihat bagian "Gabungkan Replikasi" di Kolom Identitas Replikasi. |
|
verify_resolver_signature |
1 |
Tanda tangan digital pada resolver kustom diverifikasi untuk menentukan apakah itu dari sumber tepercaya. |
0 |
Tanda tangan digital pada pemecah masalah kustom tidak diverifikasi untuk menentukan apakah itu dari sumber tepercaya. | |
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 penggabungan 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
berarti bahwa perubahan pada artikel penggabungan dapat menyebabkan rekam jepret tidak valid, dan jika ada langganan yang memerlukan rekam jepret baru, memberikan izin agar rekam jepret yang ada ditandai sebagai usang dan rekam jepret baru yang 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 penggabungan 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
berarti bahwa perubahan pada artikel penggabungan menyebabkan langganan yang ada diinisialisasi ulang, dan memberikan izin untuk reinitialisasi 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_changemergearticle
digunakan dalam replikasi penggabungan.
Karena sp_changemergearticle
digunakan untuk mengubah properti artikel yang awalnya ditentukan dengan menggunakan sp_addmergearticle, lihat sp_addmergearticle untuk informasi selengkapnya tentang properti ini.
Mengubah properti berikut mengharuskan rekam jepret baru dibuat, dan Anda harus menentukan nilai 1
untuk parameter @force_invalidate_snapshot :
check_permissions
column_tracking
destination_owner
pre_creation_command
schema_options
subset_filterclause
Mengubah properti berikut mengharuskan langganan yang ada diinisialisasi ulang, dan Anda harus menentukan nilai 1
untuk parameter @force_reinit_subscription :
check_permissions
column_tracking
destination_owner
pre_creation_command
identityrangemanagementoption
subscriber_upload_options
subset_filterclause
creation_script
schema_option
logical_record_level_conflict_detection
logical_record_level_conflict_resolution
Saat Anda menentukan nilai 3
untuk partition_options
, metadata dibersihkan setiap kali Agen Penggabungan berjalan dan rekam jepret yang dipartisi kedaluwarsa lebih cepat. Saat menggunakan opsi ini, Anda harus mempertimbangkan untuk mengaktifkan rekam jepret partisi yang diminta pelanggan. Untuk informasi selengkapnya, lihat Membuat Rekam Jepret untuk Publikasi Gabungan dengan Filter Berparameter.
Saat mengatur column_tracking
properti, jika tabel sudah diterbitkan dalam publikasi gabungan lainnya, pelacakan kolom harus sama dengan nilai yang digunakan oleh artikel yang ada berdasarkan tabel ini. Parameter ini khusus untuk artikel tabel saja.
Jika beberapa publikasi menerbitkan artikel berdasarkan tabel yang mendasar yang sama, mengubah delete_tracking
properti atau compensate_for_errors
properti untuk satu artikel menyebabkan perubahan yang sama dilakukan pada artikel lain yang didasarkan pada tabel yang sama.
Jika akun masuk/pengguna Publisher yang digunakan oleh proses penggabungan tidak memiliki izin tabel yang benar, perubahan yang tidak valid dicatat sebagai konflik.
Ketika Anda mengubah nilai schema_option
, sistem tidak melakukan pembaruan bitwise. Ini berarti bahwa ketika Anda mengatur schema_option
menggunakan sp_changemergearticle
, pengaturan bit yang ada mungkin dinonaktifkan. Untuk mempertahankan pengaturan yang ada, Anda harus melakukan & (Bitwise AND) antara nilai yang Anda tetapkan dan nilai schema_option
saat ini , yang dapat ditentukan dengan menjalankan sp_helpmergearticle.
Perhatian
Ketika Anda banyak (mungkin ratusan) artikel dalam publikasi dan Anda menjalankan sp_changemergearticle
untuk salah satu artikel, mungkin perlu waktu lama untuk menyelesaikan eksekusi.
Tabel opsi skema yang valid
Tabel berikut ini menjelaskan nilai yang diizinkan schema_option
, bergantung pada jenis artikel.
Jenis artikel | Nilai opsi skema |
---|---|
func schema only |
0x01 dan 0x2000 |
indexed view schema only |
0x01 , , 0x040 0x0100 , 0x2000 , 0x40000 , , 0x1000000 dan0x200000 |
proc schema only |
0x01 dan 0x2000 |
table |
Semua opsi. |
view schema only |
0x01 , , 0x040 0x0100 , 0x2000 , 0x40000 , , 0x1000000 dan0x200000 |
Contoh
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Izin
Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_changemergearticle
.