sp_changearticle (T-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Mengubah properti artikel dalam publikasi transaksi atau rekam jepret. Prosedur tersimpan ini dijalankan di Publisher pada database publikasi.
Sintaks
sp_changearticle
[ [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ , [ @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 yang berisi artikel. @publication adalah sysname, dengan default NULL
.
[ @article = ] N'article'
Nama artikel yang propertinya akan diubah. @article adalah sysname, dengan default NULL
.
[ @property = ] N'property'
Properti artikel yang akan diubah. @property adalah nvarchar(100), dengan default NULL
.
[ @value = ] N'value'
Nilai baru properti artikel. @value adalah nvarchar(255), dengan default NULL
.
Tabel ini menjelaskan properti artikel dan nilai untuk properti tersebut.
Properti | Nilai | Deskripsi |
---|---|---|
creation_script |
Jalur dan nama skrip skema artikel yang digunakan untuk membuat tabel target. Default adalah NULL . |
|
del_cmd |
DELETE pernyataan untuk dijalankan; jika tidak, itu dibangun dari log. |
|
description |
Entri deskriptif baru untuk artikel. | |
dest_object |
Disediakan untuk kompatibilitas mundur. Gunakan dest_table . |
|
dest_table |
Tabel tujuan baru. | |
destination_owner |
Nama pemilik objek tujuan. | |
filter |
Prosedur tersimpan baru yang akan digunakan untuk memfilter tabel (pemfilteran horizontal). Default adalah NULL . Tidak dapat diubah untuk publikasi dalam replikasi peer-to-peer. |
|
fire_triggers_on_snapshot |
true |
Pemicu pengguna yang direplikasi dijalankan saat rekam jepret awal diterapkan. Catatan: Agar pemicu direplikasi, nilai schema_option bitmask harus menyertakan nilai 0x100 . |
false |
Pemicu pengguna yang direplikasi tidak dijalankan saat rekam jepret awal diterapkan. | |
identity_range |
Mengontrol ukuran rentang identitas yang ditetapkan yang ditetapkan di Pelanggan. Tidak didukung untuk replikasi peer-to-peer. | |
ins_cmd |
INSERT pernyataan untuk dijalankan; jika tidak, itu dibangun dari log. |
|
pre_creation_cmd |
Perintah prakreasi yang dapat menghilangkan, menghapus, atau memotong tabel tujuan sebelum sinkronisasi diterapkan. | |
none |
Tidak menggunakan perintah. | |
drop |
Menghilangkan tabel tujuan. | |
delete |
Menghapus tabel tujuan. | |
truncate |
Memotong tabel tujuan. | |
pub_identity_range |
Mengontrol ukuran rentang identitas yang ditetapkan yang ditetapkan di Pelanggan. Tidak didukung untuk replikasi peer-to-peer. | |
schema_option |
Menentukan bitmap opsi pembuatan skema untuk artikel tertentu. schema_option adalah biner(8). Untuk informasi selengkapnya, lihat bagian Keterangan. |
|
0x00 |
Menonaktifkan pembuatan skrip oleh Agen Rekam Jepret. | |
0x01 |
Menghasilkan pembuatan objek (CREATE TABLE , CREATE PROCEDURE , dan sebagainya). |
|
0x02 |
Menghasilkan prosedur tersimpan yang menyebarkan perubahan untuk artikel, jika ditentukan. | |
0x04 |
Kolom identitas diskrip menggunakan IDENTITY properti . |
|
0x08 |
Mereplikasi kolom tanda waktu. Jika tidak diatur, kolom tanda waktu direplikasi sebagai biner. | |
0x10 |
Menghasilkan indeks berkluster yang sesuai. | |
0x20 |
Mengonversi jenis data yang ditentukan pengguna (UDT) ke jenis data dasar di Pelanggan. Opsi ini tidak dapat digunakan saat ada CHECK atau DEFAULT batasan pada kolom UDT, jika kolom UDT adalah bagian dari kunci utama, atau jika kolom komputasi mereferensikan kolom UDT. Tidak didukung untuk Oracle Publishers. |
|
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 FOREIGN KEY batasan. Jika tabel yang direferensikan bukan bagian dari publikasi, semua FOREIGN KEY batasan pada tabel yang diterbitkan tidak direplikasi. |
|
0x400 |
Mereplikasi CHECK batasan. |
|
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 |
Mereplikasi kunci primer dan kunci unik pada artikel tabel sebagai batasan menggunakan ALTER TABLE pernyataan.Catatan: Opsi ini tidak digunakan lagi. Gunakan 0x80 dan 0x4000 sebagai gantinya. |
|
0x10000 |
Mereplikasi CHECK batasan NOT FOR REPLICATION sehingga batasan tidak diberlakukan selama sinkronisasi. |
|
0x20000 |
Mereplikasi FOREIGN KEY batasan NOT FOR REPLICATION 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 |
Pengikatan default. | |
0x800000 |
Pengikatan aturan. | |
0x1000000 |
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 FILESTREAM atribut jika ditentukan pada kolom varbinary(maks ). 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) yang lebih besar dari 8.000 byte 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. | |
0x20000000000 |
Mereplikasi SPARSE atribut untuk kolom. Untuk informasi selengkapnya tentang atribut ini, lihat Menggunakan kolom jarang. |
|
0x40000000000 |
Aktifkan pembuatan skrip oleh agen rekam jepret untuk membuat tabel memori yang dioptimalkan pada pelanggan. | |
0x80000000000 |
Mengonversi indeks berkluster ke indeks non-kluster untuk artikel yang dioptimalkan memori. | |
status |
Menentukan status baru properti. | |
dts horizontal partitions |
Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin. | |
include column names |
Nama kolom disertakan dalam pernyataan yang direplikasi INSERT . |
|
no column names |
Nama kolom tidak disertakan dalam pernyataan yang direplikasi INSERT . |
|
no dts horizontal partitions |
Partisi horizontal untuk artikel tidak ditentukan oleh langganan yang dapat diubah. | |
none |
Menghapus semua opsi status dalam tabel sysarticles dan menandai artikel sebagai tidak aktif. | |
parameters |
Perubahan disebarkan ke Pelanggan menggunakan perintah berparameter. Ini adalah pengaturan default untuk artikel baru. | |
string literals |
Perubahan disebarluaskan ke Pelanggan menggunakan nilai literal string. | |
sync_object |
Nama tabel atau tampilan yang digunakan untuk menghasilkan file output sinkronisasi. Default adalah NULL . Tidak didukung untuk Oracle Publishers. |
|
tablespace |
Mengidentifikasi ruang tabel yang digunakan oleh tabel pengelogan untuk artikel yang diterbitkan dari database Oracle. Untuk informasi selengkapnya, lihat Mengelola Ruang Tabel Oracle. | |
threshold |
Nilai persentase yang mengontrol saat Agen Distribusi menetapkan rentang identitas baru. Tidak didukung untuk replikasi peer-to-peer. | |
type |
Tidak didukung untuk Oracle Publishers. | |
logbased |
Artikel berbasis log. | |
logbased manualboth |
Artikel berbasis log dengan filter manual dan tampilan manual. Opsi ini mengharuskan sync_object Anda juga mengatur properti dan filter . Tidak didukung untuk Oracle Publishers. |
|
logbased manualfilter |
Artikel berbasis log dengan filter manual. Opsi ini mengharuskan sync_object Anda juga mengatur properti dan filter . Tidak didukung untuk Oracle Publishers. |
|
logbased manualview |
Artikel berbasis log dengan tampilan manual. Opsi ini mengharuskan sync_object Anda juga mengatur properti . Tidak didukung untuk Oracle Publishers. |
|
indexed viewlogbased |
Artikel tampilan terindeks berbasis log. Tidak didukung untuk Oracle Publishers. Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. | |
indexed viewlogbased manualboth |
Artikel tampilan terindeks berbasis log dengan filter manual dan tampilan manual. Opsi ini mengharuskan sync_object Anda juga mengatur properti dan filter . Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. Tidak didukung untuk Oracle Publishers. |
|
indexed viewlogbased manualfilter |
Artikel tampilan terindeks berbasis log dengan filter manual. Opsi ini mengharuskan sync_object Anda juga mengatur properti dan filter . Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. Tidak didukung untuk Oracle Publishers. |
|
indexed viewlogbased manualview |
Artikel tampilan terindeks berbasis log dengan tampilan manual. Opsi ini mengharuskan sync_object Anda juga mengatur properti . Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. Tidak didukung untuk Oracle Publishers. |
|
upd_cmd |
UPDATE pernyataan untuk dijalankan; jika tidak, itu dibangun dari log. |
|
NULL |
NULL |
Mengembalikan daftar properti artikel yang dapat diubah. |
[ @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, 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 tidak menyebabkan langganan diinisialisasi ulang. Jika prosedur tersimpan mendeteksi bahwa perubahan 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.
Lihat bagian Keterangan untuk properti yang, saat diubah, mengharuskan semua langganan yang ada diinisialisasi ulang.
[ @publisher = ] N'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_changearticle
digunakan dalam replikasi rekam jepret dan replikasi transaksional.
Ketika artikel milik publikasi yang mendukung replikasi transaksional peer-to-peer, Anda hanya dapat mengubah description
properti , , ins_cmd
upd_cmd
, dan del_cmd
.
Mengubah salah satu properti berikut mengharuskan rekam jepret baru dibuat, dan Anda harus menentukan nilai 1
untuk parameter @force_invalidate_snapshot :
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
Mengubah salah satu properti berikut mengharuskan langganan yang ada diinisialisasi ulang, dan Anda harus menentukan nilai 1
untuk parameter @force_reinit_subscription .
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
Dalam publikasi yang ada, Anda dapat menggunakan sp_changearticle
untuk mengubah artikel tanpa harus menghilangkan dan membuat ulang seluruh publikasi.
Catatan
Saat mengubah nilai schema_option
, sistem tidak melakukan pembaruan bitwise. Ini berarti bahwa ketika Anda mengatur schema_option
menggunakan sp_changearticle
, pengaturan bit yang ada mungkin dinonaktifkan. Untuk mempertahankan pengaturan yang ada, Anda harus melakukan | (Bitwise ATAU) antara nilai yang Anda tetapkan dan nilai saat ini , schema_option
yang dapat ditentukan dengan menjalankan sp_helparticle.
Opsi skema yang valid
Tabel berikut ini menjelaskan nilai yang diizinkan berdasarkan schema_option
jenis replikasi (diperlihatkan di bagian atas) dan jenis artikel (ditunjukkan pada kolom pertama).
Jenis artikel | Jenis replikasi - Transaksional | Jenis replikasi - Rekam jepret |
---|---|---|
logbased |
Semua opsi | Semua opsi tetapi 0x02 |
logbased manualfilter |
Semua opsi | Semua opsi tetapi 0x02 |
logbased manualview |
Semua opsi | Semua opsi tetapi 0x02 |
indexed view logbased |
Semua opsi | Semua opsi tetapi 0x02 |
indexed view logbased manualfilter |
Semua opsi | Semua opsi tetapi 0x02 |
indexed view logbased manualview |
Semua opsi | Semua opsi tetapi 0x02 |
indexed view logbase manualboth |
Semua opsi | Semua opsi tetapi 0x02 |
proc exec |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
serializable proc exec |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
proc schema only |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
view schema only |
0x01 , , 0x010 , 0x040 0x020 , 0x0100 , 0x2000 0x40000 , 0x100000 , , 0x200000 , 0x400000 , 0x800000 , , 0x2000000 , 0x8000000 , 0x40000000 , dan0x80000000 |
0x01 , , 0x010 , 0x040 0x020 , 0x0100 , 0x2000 0x40000 , 0x100000 , , 0x200000 , 0x400000 , 0x800000 , , 0x2000000 , 0x8000000 , 0x40000000 , dan0x80000000 |
func schema only |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
0x01 , , 0x20 , 0x400000 0x2000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 , , 0x20000000 , 0x40000000 , dan0x80000000 |
indexed view schema only |
0x01 , , 0x010 , 0x040 0x020 , 0x0100 , 0x2000 0x40000 , 0x100000 , , 0x200000 , 0x400000 , 0x800000 , , 0x2000000 , 0x8000000 , 0x40000000 , dan0x80000000 |
0x01 , , 0x010 , 0x040 0x020 , 0x0100 , 0x2000 0x40000 , 0x100000 , , 0x200000 , 0x400000 , 0x800000 , , 0x2000000 , 0x8000000 , 0x40000000 , dan0x80000000 |
Catatan
Untuk publikasi pembaruan antrean0x80
, schema_option
nilai harus diaktifkan. Nilai yang didukung schema_option
untuk publikasi non-SQL Server adalah: 0x01
, , 0x02
, 0x10
, 0x40
0x80
, dan 0x1000
0x4000
.
Contoh
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Izin
Hanya anggota peran server tetap sysadmin atau peran database tetap db_owner yang dapat menjalankan sp_changearticle
.