sp_changearticle (T-SQL)

Berlaku untuk:SQL ServerAzure 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= ] 'publication' ]  
    [ , [ @article= ] 'article' ]  
    [ , [ @property= ] 'property' ]  
    [ , [ @value= ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]  

Argumen

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

[ @article = ] 'article' Adalah nama artikel yang propertinya akan diubah. artikel adalah sysname, dengan default NULL.

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

[ @value = ] 'value' Adalah nilai baru properti artikel. nilainya adalah nvarchar(255).

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. Defaultnya adalah NULL.
del_cmd Pernyataan DELETE 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). Defaultnya adalah NULL. Tidak dapat diubah untuk publikasi dalam replikasi peer-to-peer.
fire_triggers_on_snapshot benar Pemicu pengguna yang direplikasi dijalankan saat rekam jepret awal diterapkan.

Catatan: Agar pemicu direplikasi, nilai bitmask schema_option harus menyertakan nilai 0x100.
salah 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 Pernyataan INSERT untuk dijalankan; jika tidak, itu dibangun dari log.
pre_creation_cmd Perintah pra-pembuatan yang dapat menghilangkan, menghapus, atau memotong tabel tujuan sebelum sinkronisasi diterapkan.
Tidak ada Tidak menggunakan perintah.
Drop Menghilangkan tabel tujuan.
hapus Menghapus tabel tujuan.
Memotong 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 biner(8). Untuk informasi selengkapnya, lihat bagian Keterangan nanti dalam topik ini.
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 properti IDENTITY.
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 ketika ada batasan CHECK atau DEFAULT 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 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 Mereplikasi kunci primer dan kunci unik pada artikel tabel sebagai batasan menggunakan pernyataan ALTER TABLE.

Catatan: Opsi ini tidak digunakan lagi. Gunakan 0x80 dan 0x4000 sebagai gantinya.
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 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 atribut FILESTREAM 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 terkait 0x800000000.
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 Kompresi Data.
0x800000000 Atur opsi ini untuk menyimpan data FILESTREAM pada grup filenya sendiri di Pelanggan. Jika opsi ini tidak diatur, data FILESTREAM disimpan pada 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 terkait 0x100000000.
0x1000000000 Mengonversi jenis yang ditentukan pengguna (UDT) common language runtime (CLR) yang lebih besar dari 8000 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 hierarkiid (Transact-SQL).
0x4000000000 Mereplikasi indeks yang difilter pada tabel. Untuk informasi selengkapnya tentang indeks yang difilter, lihat Membuat Indeks Terfilter.
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 atribut SPARSE 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 partisi horizontal Diidentifikasi hanya untuk tujuan informasi. Tidak didukung. Kompatibilitas di masa mendatang tidak dijamin.
sertakan nama kolom Nama kolom disertakan dalam pernyataan INSERT yang direplikasi.
tidak ada nama kolom Nama kolom tidak disertakan dalam pernyataan INSERT yang direplikasi.
tidak ada partisi horizontal dts Partisi horizontal untuk artikel tidak ditentukan oleh langganan yang dapat diubah.
Tidak ada Menghapus semua opsi status dalam tabel sysarticles dan menandai artikel sebagai tidak aktif.
parameter Perubahan disebarkan ke Pelanggan menggunakan perintah berparameter. Ini adalah pengaturan default untuk artikel baru.
literal string Perubahan disebarluaskan ke Pelanggan menggunakan nilai literal string.
sync_object Nama tabel atau tampilan yang digunakan untuk menghasilkan file output sinkronisasi. Defaultnya adalah NULL. Tidak didukung untuk Oracle Publishers.
ruang tabel Mengidentifikasi ruang tabel yang digunakan oleh tabel pengelogan untuk artikel yang diterbitkan dari database Oracle. Untuk informasi selengkapnya, lihat Mengelola Ruang Tabel Oracle.
ambang Nilai persentase yang mengontrol saat Agen Distribusi menetapkan rentang identitas baru. Tidak didukung untuk replikasi peer-to-peer.
jenis Tidak didukung untuk Oracle Publishers.
logbased Artikel berbasis log.
manualboth logbased Artikel berbasis log dengan filter manual dan tampilan manual. Opsi ini mengharuskan properti sync_object dan filter juga diatur. Tidak didukung untuk Oracle Publishers.
penyaring manual logbased Artikel berbasis log dengan filter manual. Opsi ini mengharuskan properti sync_object dan filter juga diatur. Tidak didukung untuk Oracle Publishers.
ringkasan manual logbased Artikel berbasis log dengan tampilan manual. Opsi ini mengharuskan properti sync_object juga diatur. Tidak didukung untuk Oracle Publishers.
viewlogbased terindeks Artikel tampilan terindeks berbasis log. Tidak didukung untuk Oracle Publishers. Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah.
viewlogbased manualboth terindeks Artikel tampilan terindeks berbasis log dengan filter manual dan tampilan manual. Opsi ini mengharuskan properti sync_object dan filter juga diatur. Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. Tidak didukung untuk Oracle Publishers.
viewlogbased manualfilter terindeks Artikel tampilan terindeks berbasis log dengan filter manual. Opsi ini memerlukan properti sync_object dan filter juga diatur. Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. Tidak didukung untuk Oracle Publishers.
ringkasan manual viewlogbased terindeks Artikel tampilan terindeks berbasis log dengan tampilan manual. Opsi ini mengharuskan properti sync_object juga diatur. Untuk jenis artikel ini, tabel dasar tidak perlu diterbitkan secara terpisah. Tidak didukung untuk Oracle Publishers.
upd_cmd Pernyataan UPDATE 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 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, dan jika ada langganan yang akan 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 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 reinitialisasi langganan terjadi.

Lihat bagian Keterangan untuk properti yang, saat diubah, mengharuskan semua langganan yang ada diinisialisasi ulang.

[ @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_changearticle digunakan dalam replikasi rekam jepret dan replikasi transaksional.

Saat artikel milik publikasi yang mendukung replikasi transaksional peer-to-peer, Anda hanya dapat mengubah deskripsi, ins_cmd, upd_cmd, dan properti 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 sudah 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 schema_option saat ini, yang dapat ditentukan dengan menjalankan sp_helparticle.

Opsi Skema yang Valid

Tabel berikut ini menjelaskan nilai schema_option yang diizinkan berdasarkan jenis replikasi (diperlihatkan di bagian atas) dan jenis artikel (diperlihatkan di kolom pertama).

Jenis artikel Jenis replikasi - Transaksional Jenis replikasi - Rekam jepret
logbased Semua opsi Semua opsi kecuali 0x02
penyaring manual logbased Semua opsi Semua opsi kecuali 0x02
ringkasan manual logbased Semua opsi Semua opsi kecuali 0x02
tampilan terindeks logbased Semua opsi Semua opsi kecuali 0x02
tampilan terindeks logbased manualfilter Semua opsi Semua opsi kecuali 0x02
tampilan terindeks logbased manualview Semua opsi Semua opsi kecuali 0x02
tampilan terindeks logbase manualboth Semua opsi Semua opsi kecuali 0x02
proc exec 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000
proc exec yang dapat diserialisasikan 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000
proc skema saja 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000
tampilkan skema saja 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, dan 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, dan 0x80000000
skema func saja 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, dan 0x80000000
skema tampilan terindeks saja 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, dan 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, dan 0x80000000

Catatan

Untuk memperbarui publikasi antrean, nilai schema_option 0x80 harus diaktifkan. Nilai schema_option yang didukung untuk publikasi non-SQL Server adalah: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, dan 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.

Lihat Juga

Menampilkan dan Mengubah Properti Artikel
Mengubah Properti Publikasi dan Artikel
sp_addarticle (T-SQL)
sp_articlecolumn (T-SQL)
sp_droparticle (T-SQL)
sp_helparticle (T-SQL)
sp_helparticlecolumns (T-SQL)