sys.sp_changearticle (Transact-SQL)

Şunlar için geçerlidir: SQL Server Azure SQL Yönetilen Örneği

İşlemsel veya anlık bir yayında makalenin özelliklerini değiştirir. Bu saklı yordam yayın veritabanındaki Publisher'da yürütülür.

Transact-SQL söz dizimi kuralları

Syntax

sys.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' ]
[ ; ]

Arguments

[ @publication = ] Yayın yok'

Makaleyi içeren yayının adı. @publicationsysname'dir ve varsayılan olarak ' NULLdir.

[ @article = ] N'article'

Mülkü değiştirilecek eşyanın adı. @articlesysname'dir, varsayılan olarak .NULL

[ @property = ] N'property'

Değiştirilecek bir makale özelliği. @propertynvarchar(100)'dür, varsayılan NULLolarak .

[ @value = ] N'value'

Makale özelliğinin yeni değeri. @valuenvarchar(255), varsayılan değeridir NULL.

Bu tablo, makalelerin özelliklerini ve bu özelliklerin değerlerini açıklar.

Property Değerler Description
creation_script Hedef tablolar oluşturmak için kullanılan makale şema betiklerinin yolu ve adı. Varsayılan değer: NULL.
del_cmd DELETE uygulama beyanı; aksi takdirde, kütükten inşa edilir.
description Makale için yeni betimleyici giriş.
dest_object Geriye dönük uyumluluk için sağlanır. dest_table adresini kullanın.
dest_table Yeni varış tablosu.
destination_owner Hedef nesnenin sahibinin adı.
filter Tabloyu filtrelemek için kullanılacak yeni depolanmış prosedür (yatay filtreleme). Varsayılan değer: NULL. Eşler arası çoğaltma yayınları için değiştirilemez.
fire_triggers_on_snapshot true Çoğaltılan kullanıcı tetikleyicileri, ilk anlık görüntü uygulandığında çalıştırılır.

Not: Tetikleyicilerin çoğaltılması için, bitmask değeri schema_option değeri içermelidir 0x100.
false Çoğaltılan kullanıcı tetikleyicileri, ilk anlık görüntü uygulandığında çalıştırılmaz.
identity_range Aboneye atanan kimlik aralıklarının boyutunu kontrol eder. Eşler arası çoğaltma desteklenmiyor.
ins_cmd INSERT uygulama beyanı; aksi takdirde, kütükten inşa edilir.
pre_creation_cmd Senkronizasyon uygulanmadan önce hedef tabloyu düşürebilen, silebilen veya kıskalabilen ön oluşturma komutu.
none Komut kullanmıyor.
drop Hedef tabloyu düşürüyor.
delete Hedef tabloyu siler.
truncate Varış tablosunu kısaltıyor.
pub_identity_range Aboneye atanan kimlik aralıklarının boyutunu kontrol eder. Eşler arası çoğaltma desteklenmiyor.
schema_option Verilen makale için şema oluşturma seçeneğinin bit haritasını belirtir. schema_option ikilidir(8). Daha fazla bilgi için Açıklamalar bölümüne bakın.
0x00 Snapshot Agent tarafından script yapmayı devre dışı bırakıyor.
0x01 Nesne yaratımı (CREATE TABLE, CREATE PROCEDURE, ve benzeri) üretir.
0x02 Tanımlıysa, makale için değişiklikleri yayan saklanan prosedürleri oluşturur.
0x04 Kimlik sütunları bu IDENTITY özellik kullanılarak betiklenir.
0x08 Zaman damgası sütunlarını çoğaltın. Ayarlanmazsa, zaman damgası sütunları ikili olarak çoğaltılır.
0x10 Buna karşılık gelen kümelenmiş bir indeks oluşturur.
0x20 Abone içinde kullanıcı tanımlı veri tiplerini (UDT) temel veri tiplerine dönüştürür. Bu seçenek, bir UDT sütununda bir veya CHECK kısıtlama olduğundaDEFAULT, bir UDT sütunu birincil anahtarın parçasa veya hesaplanan bir sütun bir UDT sütununa referans veriyorsa kullanılamaz. Oracle Publishers için desteklenmiyor.
0x40 Buna karşılık gelen kümelenmemiş indeksler oluşturur.
0x80 Birincil anahtarlarda ilan edilen referans bütünlüğü içerir.
0x100 Tanımlanmışsa, kullanıcı tetikleyicilerini bir tablo makalesinde çoğaltır.
0x200 Kısıtlamaları çoğaltıyor FOREIGN KEY . Referans verilen tablo bir yayının parçası değilse, yayımlanmış tablodaki tüm FOREIGN KEY kısıtlamalar çoğaltılmaz.
0x400 Kısıtlamaları çoğaltıyor CHECK .
0x800 Varsayılan ayarları çoğaltıyor.
0x1000 Sütun düzeyinde derlemeyi çoğaltıyor.
0x2000 Yayınlanmış makale kaynak nesnesine bağlı genişletilmiş özellikleri çoğaltır.
0x4000 Bir tablo maddesinde tanımlanmışsa benzersiz anahtarları çoğaltır.
0x8000 Bir tablo makalesindeki birincil anahtar ve benzersiz anahtarları cümleler kullanarak ALTER TABLE kısıtlama olarak çoğaltır.

Not: Bu seçenek artık kullanıl yatmadı. Bunun yerine 0x80 ve 0x4000 kullanın.
0x10000 Kısıtlamaları senkronizasyon CHECK sırasında uygulanmaması için çoğaltıyorNOT FOR REPLICATION.
0x20000 Kısıtlamaları senkronizasyon FOREIGN KEY sırasında uygulanmaması için çoğaltıyorNOT FOR REPLICATION.
0x40000 Bölümlenmiş bir tablo veya indeksle ilişkili dosya gruplarını çoğaltır.
0x80000 Bölünmüş bir tablo için bölümleme şemasını çoğaltıyor.
0x100000 Bölünmüş bir indeks için bölümleme şemasını çoğaltır.
0x200000 Tablo istatistiklerini çoğaltıyor.
0x400000 Varsayılan bağlamalar.
0x800000 Kural bağlayıcıları.
0x1000000 Tam metin indeks.
0x2000000 XML sütunlarına bağlı XML şema koleksiyonları çoğaltılmaz.
0x4000000 XML sütunlarındaki indeksleri çoğaltıyor.
0x8000000 Abonede zaten olmayan şemaları oluşturun.
0x10000000 Abone üzerinde xml sütunlarını ntext olarak dönüştürür.
0x20000000 SQL Server 2005 (9.x)'da tanıtılan büyük nesne veri tiplerini (nvarchar(max), varchar(max) ve varbinary(max)) SQL Server 2000 (8.x)'de desteklenen veri tiplerine dönüştürür.
0x40000000 İzinleri çoğaltın.
0x80000000 Yayının parçası olmayan herhangi bir nesneye bağımlılıkları kaldırmaya çalışın.
0x100000000 FILESTREAM sütunlarda belirtilmişse, bu seçeneği kopyalamak için bu seçeneği kullanın. Tabloları SQL Server 2005 (9.x) abonelerine çoğaltıyorsanız bu seçeneği belirtmeyin. FILESTREAM sütunlarına sahip tabloları SQL Server 2000 (8.x) abonelerine çoğaltmak, bu şema seçeneğinin nasıl ayarlandığı fark etmez desteklenmiyor.

İlgili seçeneğe 0x800000000bakınız.
0x200000000 SQL Server 2008 (10.0.x)'de tanıtılan tarih ve saat veri türlerini (tarih, saat, tarih zamanıofseti ve tarih zamanı2) önceki SQL Server sürümlerinde desteklenen veri türlerine dönüştürür.
0x400000000 Veri ve indeksler için sıkıştırma seçeneğini çoğaltıyor. Daha fazla bilgi için bkz. Veri sıkıştırma.
0x800000000 Bu seçenek, FILESTREAM verilerini Abone Grubu'ndaki kendi dosya grubunda depolayacak şekilde ayarlayın. Bu seçenek ayarlanmadıysa, FILESTREAM verileri varsayılan dosya grubunda saklanır. Çoğaltma dosya grupları oluşturmaz; bu nedenle, bu seçeneği ayarlıyorsanız, anlık görüntüyü Aboneye uygulamadan önce dosya grubunu oluşturmanız gerekir. Snapshot uygulamadan önce nesne nasıl oluşturulacağı hakkında daha fazla bilgi için Snapshot Uygulanmadan Önce ve Sonra Scriptleri Çalıştır bölümüne bakabilirsiniz.

İlgili seçeneğe 0x100000000bakınız.
0x1000000000 8.000 bayttan büyük ortak dil çalışma zamanı (CLR) kullanıcı tanımlı türleri (UDT'leri) varbinary(max) olarak dönüştürür; böylece UDT tipindeki sütunlar SQL Server 2005 (9.x) çalıştıran abonelere çoğaltılabilir.
0x2000000000 Hiyerarşi veri tipini varbinary(max) olarak dönüştürür, böylece tip hiyerarşisi sütunları SQL Server 2005 (9.x) çalıştıran abonelere çoğaltılabilir. Çoğaltılan tablolarda hiyerarşi sütunlarının nasıl kullanılacağı hakkında daha fazla bilgi için hiyerarşi veri tipi metod referansına bakınız.
0x4000000000 Tablodaki filtrelenmiş indeksleri çoğaltıyor. Filtrelenmiş dizinler hakkında daha fazla bilgi için bkz. Filtrelenmiş dizinler oluşturma.
0x8000000000 Coğrafya ve geometri veri tiplerini varbinary(max) olarak dönüştürür, böylece bu tipteki sütunlar SQL Server 2005 (9.x) çalıştıran Abonelere çoğaltılabilir.
0x10000000000 Coğrafyave geometri tipi sütunlarındaki indeksleri çoğaltır.
0x20000000000 Sütunlar için özniteliği çoğaltıyor SPARSE . Bu öznitelik hakkında daha fazla bilgi için bkz. Seyrek sütunlar kullan.
0x40000000000 Abone üzerinde bellek optimize edilmiş tablo oluşturmak için snapshot ajanı tarafından betik yazmayı etkinleştirin.
0x80000000000 Bellek optimize edilmiş makaleler için kümelenmiş indeksi kümelenmemiş indekse dönüştürür.
status Mülkün yeni durumunu belirtir.
dts horizontal partitions Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.
include column names Sütun adları çoğaltılan INSERT ifadede yer alır.
no column names Sütun adları çoğaltılan INSERT ifadede yer almıyor.
no dts horizontal partitions Makalenin yatay bölümü dönüştürülebilir abonelikle tanımlanmaz.
none Sistem maddeleri tablosunda tüm durum seçeneklerini temizler ve makaleyi etkin olmayan olarak işaretler.
parameters Değişiklikler, parametreli komutlarla aboneye iletilir. Bu, yeni bir makale için varsayılan ayardır.
string literals Değişiklikler, dize literal değerleri kullanılarak aboneye iletilir.
sync_object Senkronizasyon çıktı dosyası üretmek için kullanılan tablo veya görünüm adı. Varsayılan değer: NULL. Oracle Publishers için desteklenmiyor.
tablespace Oracle veritabanından yayımlanan bir makale için loglama tablosunun kullandığı tablo alanını tanımlar. Daha fazla bilgi için bkz. Oracle Tablespaces'ı yönetme.
threshold Distribution Agent'ın yeni bir kimlik aralığı atamasını kontrol eden yüzde değeri. Eşler arası çoğaltma desteklenmiyor.
type Oracle Publishers için desteklenmiyor.
logbased Log tabanlı makale.
logbased manualboth Günlük tabanlı makale, manuel filtre ve manuel görünüm. Bu seçenek, ve sync_object özelliklerini de ayarlamanızı filter gerektirir. Oracle Publishers için desteklenmiyor.
logbased manualfilter Manuel filtreli günlük makale. Bu seçenek, ve sync_object özelliklerini de ayarlamanızı filter gerektirir. Oracle Publishers için desteklenmiyor.
logbased manualview Manuel görünümlü günlük tabanlı makale. Bu seçenek, ayrıca mülkü sync_object de ayarlamanızı gerektirir. Oracle Publishers için desteklenmiyor.
indexed viewlogbased Log tabanlı indeksli görünüm makalesi. Oracle Publishers için desteklenmiyor. Bu tür makaleler için temel tablonun ayrı yayımlanması gerekmez.
indexed viewlogbased manualboth Log tabanlı indeksli görünüm, manuel filtre ve manuel görünüm ile makale. Bu seçenek, ve sync_object özelliklerini de ayarlamanızı filter gerektirir. Bu tür makaleler için temel tablonun ayrı yayımlanması gerekmez. Oracle Publishers için desteklenmiyor.
indexed viewlogbased manualfilter Log tabanlı indeksli görünüm makalesi, manuel filtre. Bu seçenek, ve sync_object özelliklerini de ayarlamanızı filter gerektirir. Bu tür makaleler için temel tablonun ayrı yayımlanması gerekmez. Oracle Publishers için desteklenmiyor.
indexed viewlogbased manualview Log tabanlı indeksli görünümlü makale, manuel görünümlü. Bu seçenek, ayrıca mülkü sync_object de ayarlamanızı gerektirir. Bu tür makaleler için temel tablonun ayrı yayımlanması gerekmez. Oracle Publishers için desteklenmiyor.
upd_cmd UPDATE uygulama beyanı; aksi takdirde, kütükten inşa edilir.
NULL NULL Değiştirilebilecek makale özelliklerinin bir listesini döndürür.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Bu saklanan prosedürün aldığı işlemin mevcut bir anlık görüntüyü geçersiz kılabileceğini kabul eder. @force_invalidate_snapshotbittir ve varsayılan değeridir 0.

0 , makalede yapılan değişikliklerin anlık görüntünün geçersiz olmasını neden olmadığını belirtir. Eğer saklanan prosedür değişikliğin yeni bir anlık görüntü gerektirdiğini tespit ederse, hata oluşur ve hiçbir değişiklik yapılmaz.

1 makaledeki değişikliklerin snapshot'un geçersiz hale gelmesine yol açabileceğini belirtir ve yeni bir snapshot gerektiren mevcut abonelikler varsa, mevcut snapshot'un modası geçersiz olarak işaretlenmesine ve yeni bir snapshot oluşturulmasına izin verir.

Değiştirildiğinde yeni bir anlık görüntünün oluşturulmasını gerektiren özellikler için Açıklamalar bölümüne bakınız.

[ @force_reinit_subscription = ] force_reinit_subscription

Bu saklanan prosedürün aldığı işlemin mevcut aboneliklerin yeniden başlatılmasını gerektirebileceğini kabul eder. @force_reinit_subscriptionbittir ve varsayılan değeridir 0.

0 makaledeki değişikliklerin aboneliğin yeniden başlatılmasına neden olmadığını belirtir. Eğer kaydedilen prosedür değişikliğin mevcut aboneliklerin yeniden başlatılması gerektiğini tespit ederse, bir hata oluşur ve herhangi bir değişiklik yapılmaz.

1 makaledeki değişikliklerin mevcut aboneliklerin yeniden başlatılmasına yol açtığını belirtir ve abonelik yeniden başlatma izni verir.

Değiştirildiğinde tüm mevcut aboneliklerin yeniden başlatılması gerektiğini gerektiren özellikler için Açıklamalar bölümüne bakınız.

[ @publisher = ] N'publisher'

SQL Server olmayan bir Yayıncı belirtir. @publishersysname'dir ve varsayılan olarak .NULL

Note

@publisher SQL Server Publisher üzerinde makale özellikleri değiştirilirken kullanılmamalıdır.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Remarks

sp_changearticle anlık görüntü çoğaltma ve işlemsel çoğaltmada kullanılır.

Bir makale, eşler arası işlem replikasyonunu destekleyen bir yayına ait olduğunda, yalnızca , , description, ve ins_cmd özelliklerini değiştirebilirsinizupd_cmd. del_cmd

Aşağıdaki özelliklerden herhangi birini değiştirmek için yeni bir anlık görüntü oluşturulması gerekir ve 1 parametresi için bir değer belirtmeniz gerekir:

  • del_cmd
  • dest_table
  • destination_owner
  • ins_cmd
  • pre_creation_cmd
  • schema_options
  • upd_cmd

Aşağıdaki özelliklerden herhangi birini değiştirmek için mevcut aboneliklerin yeniden başlatılması gerekir ve 1 parametresi için bir değer belirtmeniz gerekir.

  • del_cmd
  • dest_table
  • destination_owner
  • filter
  • ins_cmd
  • status
  • upd_cmd

Mevcut bir yayında, sp_changearticle makaleyi tamamen bırakıp yeniden oluşturmak zorunda kalmadan makaleyi değiştirebilirsiniz.

Note

Değerini schema_optiondeğiştirdiğinde, sistem bitli güncelleme yapmaz. Bu, schema_option mevcut bit ayarlarını kullandığınızda sp_changearticlekapalı olabileceği anlamına gelir. Mevcut ayarları korumak için | (Bitwise OR) Ayarladığınız değer ile mevcut değer schema_optionarasında , bu da sp_helparticle çalıştırarak belirlenebilir.

Geçerli şema seçenekleri

Aşağıdaki tablo, çoğaltma tipine (üstte gösterilmiştir) ve makale tipine (ilk sütunda gösterilmiştir) dayalı izin verilen değerleri schema_option açıklar.

Makale türü Çoğaltma türü - İşlemsel Çoğaltma türü - Anlık görüntü
logbased Tüm seçenekler Tüm seçenekler hariç 0x02
logbased manualfilter Tüm seçenekler Tüm seçenekler hariç 0x02
logbased manualview Tüm seçenekler Tüm seçenekler hariç 0x02
indexed view logbased Tüm seçenekler Tüm seçenekler hariç 0x02
indexed view logbased manualfilter Tüm seçenekler Tüm seçenekler hariç 0x02
indexed view logbased manualview Tüm seçenekler Tüm seçenekler hariç 0x02
indexed view logbase manualboth Tüm seçenekler Tüm seçenekler hariç 0x02
proc exec 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000
serializable proc exec 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000
proc schema only 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000
view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 ve 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 ve 0x80000000
func schema only 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x80000000x100000000x200000000x40000000, ve0x80000000
indexed view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 ve 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 ve 0x80000000

Note

Kuyrukta güncellenen yayınlar için, schema_option değeri 0x80 etkinleştirilmelidir. SQL Server dışı yayınlar için desteklenen schema_option değerler şunlardır: 0x01, 0x02, 0x10, 0x400x800x1000, ve .0x4000

Examples

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

Permissions

Yalnızca sistem yöneticisi sabit sunucu rolünün veya sabit db_owner veritabanı rolünün sp_changearticleüyeleri çalıştırabilir.