Bagikan melalui


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.

Konvensi sintaks transact-SQL

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 0x800000000terkait .
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 0x100000000terkait .
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 descriptionproperti , , ins_cmdupd_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_optionyang 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, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000
serializable proc exec 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000
proc schema only 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000
view schema only 0x01, , 0x010, 0x0400x020, 0x0100, 0x20000x40000, 0x100000, , 0x200000, 0x400000, 0x800000, , 0x2000000, 0x8000000, 0x40000000, dan0x80000000 0x01, , 0x010, 0x0400x020, 0x0100, 0x20000x40000, 0x100000, , 0x200000, 0x400000, 0x800000, , 0x2000000, 0x8000000, 0x40000000, dan0x80000000
func schema only 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000 0x01, , 0x20, 0x4000000x2000, 0x800000, 0x2000000, 0x8000000, 0x10000000, , 0x20000000, 0x40000000, dan0x80000000
indexed view schema only 0x01, , 0x010, 0x0400x020, 0x0100, 0x20000x40000, 0x100000, , 0x200000, 0x400000, 0x800000, , 0x2000000, 0x8000000, 0x40000000, dan0x80000000 0x01, , 0x010, 0x0400x020, 0x0100, 0x20000x40000, 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, 0x400x80, 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.