sys.sp_changearticle (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Mění vlastnosti článku v transakční nebo momentkové publikaci. Tato uložená procedura se spustí v Publisheru v databázi publikace.

Transact-SQL konvence syntaxe

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 = ] N'publikace'

Název publikace, která článek obsahuje. @publication je sysname s výchozím nastavením NULL.

[ @article = ] N'článek'

Název článku, jehož vlastnictví má být změněno. @article je sysname s výchozím nastavením NULL.

[ @property = ] N'property'

Vlastnost článku ke změně. @property je nvarchar(100), s výchozím hodnotou NULL.

[ @value = ] N'value'

Nová hodnota vlastnosti článku. @value je nvarchar(255) s výchozí hodnotou NULL.

Tato tabulka popisuje vlastnosti článků a hodnoty těchto vlastností.

Vlastnictví Hodnoty Description
creation_script Cesta a název skriptu schématu článku používaného k vytváření cílových tabulek. Výchozí hodnota je NULL.
del_cmd DELETE prohlášení k vykonání; jinak je to sestaveno z logu.
description Nový popisný záznam článku.
dest_object Poskytuje se zpětná kompatibilita. Použijte dest_table.
dest_table Nová tabulka destinací.
destination_owner Jméno vlastníka cílového objektu.
filter Nový uložený postup pro filtrování tabulky (horizontální filtrování). Výchozí hodnota je NULL. Nelze to změnit pro publikace v peer-to-peer replikaci.
fire_triggers_on_snapshot true Replikované uživatelské spouštěče se spouštějí při aplikaci počátečního snímku.

Poznámka: Pro replikaci spouštěčů musí hodnota bitové masky obsahovat schema_option hodnotu 0x100.
false Replikované uživatelské triggery se nespouštějí při aplikaci počátečního snapshotu.
identity_range Ovládá velikost přiřazených rozsahů identit přiřazených předplatitelům. Není podporováno pro peer-to-peer replikaci.
ins_cmd INSERT prohlášení k vykonání; jinak je to sestaveno z logu.
pre_creation_cmd Příkaz pro předvytvoření, který může před aplikací synchronizace odstranit, smazat nebo zkrátit cílovou tabulku.
none Nepoužívá žádný příkaz.
drop Upustí tabulku cíle.
delete Smaže tabulku cíle.
truncate Zkracuje tabulku cíle.
pub_identity_range Ovládá velikost přiřazených rozsahů identit přiřazených předplatitelům. Není podporováno pro peer-to-peer replikaci.
schema_option Specifikuje bitmapu možnosti generování schématu pro daný článek. schema_optionje binární(8). Další informace najdete v části Poznámky.
0x00 Vypíná skriptování Snapshot Agent.
0x01 Generuje tvorbu objektu (CREATE TABLE, CREATE PROCEDURE, a tak dále).
0x02 Generuje uložené procedury, které propagují změny pro článek, pokud jsou definovány.
0x04 Sloupce identity jsou skriptovány pomocí této IDENTITY vlastnosti.
0x08 Replikujte sloupce časových razítek . Pokud nejsou nastaveny, sloupce časových razítek se replikují jako binární.
0x10 Generuje odpovídající shlukovaný index.
0x20 Převádí uživatelsky definované datové typy (UDT) na základní datové typy u odběratele. Tuto možnost nelze použít, pokud existuje omezení CHECK or DEFAULT na sloupec UDT, pokud je sloupec UDT součástí primárního klíče, nebo pokud vypočítaný sloupec odkazuje na sloupec UDT. Oracle Publishers to nepodporuje.
0x40 Generuje odpovídající neshlukované indexy.
0x80 Zahrnuje deklarovanou referenční integritu na primárních klíčích.
0x100 Replikuje uživatelské triggery na článku tabulky, pokud jsou definovány.
0x200 Replikuje FOREIGN KEY omezení. Pokud referenční tabulka není součástí publikace, všechna FOREIGN KEY omezení publikované tabulky nejsou replikována.
0x400 Replikuje CHECK omezení.
0x800 Replikuje výchozí nastavení.
0x1000 Replikuje kolaci na úrovni sloupců.
0x2000 Replikuje rozšířené vlastnosti spojené s publikovaným zdrojovým objektem článku.
0x4000 Replikuje unikátní klíče, pokud jsou definovány v článku tabulky.
0x8000 Replikuje primární klíč a jedinečné klíče na článku tabulky jako omezení pomocí ALTER TABLE příkazů.

Poznámka: Tato možnost je zastaralá. Použijte 0x80 a 0x4000 místo toho.
0x10000 Replikuje CHECK omezení tak, NOT FOR REPLICATION aby nebyla během synchronizace vynucována.
0x20000 Replikuje FOREIGN KEY omezení tak, NOT FOR REPLICATION aby nebyla během synchronizace vynucována.
0x40000 Replikuje soubory spojené s rozdělenou tabulkou nebo indexem.
0x80000 Replikuje schéma rozdělení pro rozdělenou tabulku.
0x100000 Replikuje schéma rozdělení pro rozdělený index.
0x200000 Replikuje tabulkové statistiky.
0x400000 Výchozí vazby.
0x800000 Pravidlová svazování.
0x1000000 Celý text rejstříku.
0x2000000 XML schémata kolekce vázané na sloupce xml se nereplikují.
0x4000000 Replikuje indexy na XML sloupcích.
0x8000000 Vytvořte všechna schémata, která nejsou na předplatiteli přítomna.
0x10000000 Převádí sloupce xml na ntext na předplatitele.
0x20000000 Převádí velké datové typy objektů (nvarchar(max),varchar(max) a varbinary(max)), které byly zavedeny v SQL Server 2005 (9.x), na datové typy podporované v SQL Server 2000 (8.x).
0x40000000 Replikujte oprávnění.
0x80000000 Snažte se vyřadit závislosti na objektech, které nejsou součástí publikace.
0x100000000 Použijte tuto možnost k replikaci atributu FILESTREAM , pokud je specifikován ve sloupcích varbinary(max ). Tuto možnost nespecifikujte, pokud replikujete tabulky na předplatitele SQL Server 2005 (9.x). Replikace tabulek obsahujících sloupce FILESTREAM na předplatitele SQL Server 2000 (8.x) není podporována, bez ohledu na to, jak je tato možnost schématu nastavena.

Viz související možnost 0x800000000.
0x200000000 Převádí datové a časové typy (datum, čas, datetimeoffset a datetime2), které byly zavedeny v SQL Server 2008 (10.0.x), na datové typy podporované v dřívějších verzích SQL Server.
0x400000000 Replikuje možnost komprese pro data a indexy. Další informace najdete v tématu Komprese dat.
0x800000000 Nastavte tuto možnost pro ukládání dat FILESTREAM do vlastní skupiny souborů u Subscriber. Pokud tato možnost není nastavena, data FILESTREAM jsou uložena ve výchozí skupině souborů. Replikace nevytváří skupiny souborů; pokud tedy nastavíte tuto možnost, musíte vytvořit skupinu souborů před aplikací snapshotu na odběratele. Pro více informací o tom, jak vytvořit objekty před aplikací snapshotu, viz Execute Scripts Before and After the Snapshot Is Applied.

Viz související možnost 0x100000000.
0x1000000000 Převádí uživatelsky definované typy (UDT) v běžném jazyce (CLR) větší než 8 000 bajtů na varbinary(max), aby sloupce typu UDT mohly být replikovány na předplatitele, kteří běží na SQL Server 2005 (9.x).
0x2000000000 Převádí datový typ hierarchyid na varbinary(max), aby sloupce typu hierarchyid mohly být replikovány na předplatitele, kteří běží na SQL Server 2005 (9.x). Pro více informací o tom, jak používat sloupce hierarchyid v replikovaných tabulkách, viz reference metody typu hierarchyid.
0x4000000000 Replikuje všechny filtrované indexy v tabulce. Další informace o filtrovaných indexech naleznete v tématu Vytvoření filtrovaných indexů.
0x8000000000 Převádí geografické a geometrické datové typy do varbinary(max), aby sloupce těchto typů mohly být replikovány pro předplatitele, kteří běží na SQL Server 2005 (9.x).
0x10000000000 Replikuje indexy na sloupcích typu geografie a geometrie.
0x20000000000 Replikuje SPARSE atribut pro sloupce. Pro více informací o tomto atributu viz Použít řídké sloupce.
0x40000000000 Povolte skriptování snapshot agentem pro vytvoření tabulky optimalizované pro paměť na odběrateli.
0x80000000000 Převádí shlukovaný index na neclusterovaný index pro články optimalizované pro paměť.
status Specifikuje nový stav nemovitosti.
dts horizontal partitions Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
include column names Názvy sloupců jsou zahrnuty v replikovaném INSERT příkazu.
no column names Názvy sloupců nejsou zahrnuty v replikovaném příkazu INSERT .
no dts horizontal partitions Horizontální oddíl článku není definován transformovatelným odběrem.
none Vymaže všechny možnosti stavů v tabulce sysarticles a označí článek jako neaktivní.
parameters Změny jsou předávány předplatiteli pomocí parametrizovaných příkazů. Toto je výchozí nastavení pro nový článek.
string literals Změny jsou propagovány na odběratele pomocí literálních hodnot řetězce.
sync_object Název tabulky nebo pohledu použitého k vytvoření synchronizačního výstupního souboru. Výchozí hodnota je NULL. Oracle Publishers to nepodporuje.
tablespace Identifikuje prostor tabulky používaný logovací tabulkou pro článek publikovaný z databáze Oracle. Další informace naleznete v tématu Správa oracle Tablespaces.
threshold Procentuální hodnota, která určuje, kdy Distribution Agent přiřadí nový rozsah identity. Není podporováno pro peer-to-peer replikaci.
type Oracle Publishers to nepodporuje.
logbased Článek založený na logu.
logbased manualboth Článek založený na záznamech s manuálním filtrem a manuálním zobrazením. Tato možnost vyžaduje, abyste také nastavili sync_object vlastnosti a filter . Oracle Publishers to nepodporuje.
logbased manualfilter Článek založený na logu s manuálním filtrem. Tato možnost vyžaduje, abyste také nastavili sync_object vlastnosti a filter . Oracle Publishers to nepodporuje.
logbased manualview Článek založený na logu s manuálním zobrazením. Tato možnost vyžaduje, abyste také nastavili nemovitost.sync_object Oracle Publishers to nepodporuje.
indexed viewlogbased Článek s indexovaným zobrazením založený na logu. Oracle Publishers to nepodporuje. U tohoto typu článku není nutné základní tabulku publikovat zvlášť.
indexed viewlogbased manualboth Článek s indexovaným zobrazením založený na logu s manuálním filtrem a manuálním zobrazením. Tato možnost vyžaduje, abyste také nastavili sync_object vlastnosti a filter . U tohoto typu článku není nutné základní tabulku publikovat zvlášť. Oracle Publishers to nepodporuje.
indexed viewlogbased manualfilter Článek s indexovaným zobrazením založený na logu s manuálním filtrem. Tato možnost vyžaduje, abyste také nastavili sync_object vlastnosti a filter . U tohoto typu článku není nutné základní tabulku publikovat zvlášť. Oracle Publishers to nepodporuje.
indexed viewlogbased manualview Článek s indexovaným zobrazením založený na logu s manuálním zobrazením. Tato možnost vyžaduje, abyste také nastavili nemovitost.sync_object U tohoto typu článku není nutné základní tabulku publikovat zvlášť. Oracle Publishers to nepodporuje.
upd_cmd UPDATE prohlášení k vykonání; jinak je to sestaveno z logu.
NULL NULL Vrací seznam vlastností článku, které lze změnit.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Uznává, že akce provedená touto uloženou procedurou může zneplatnit existující snímek. @force_invalidate_snapshot je bit s výchozím nastavením 0.

0 určuje, že změny článku nezpůsobí, že snímek bude neplatný. Pokud uložená procedura zjistí, že změna vyžaduje nový snapshot, dojde k chybě a žádné změny nejsou provedeny.

1 specifikuje, že změny článku mohou způsobit, že snapshot bude neplatný, a pokud existují existující předplatné, která vyžadují nový snapshot, dává povolení označit stávající snapshot jako zastaralý a vytvořit nový snapshot.

Viz sekce Poznámky pro vlastnosti, které po změně vyžadují vytvoření nového snímku.

[ @force_reinit_subscription = ] force_reinit_subscription

Uznává, že akce provedená touto uloženou procedurou může vyžadovat opětovnou inicializaci stávajících předplatných. @force_reinit_subscription je bit s výchozím nastavením 0.

0 určuje, že změny článku nezpůsobí opětovné inicializaci předplatného. Pokud uložená procedura zjistí, že změna vyžaduje opětovnou inicializaci stávajících předplatných, dojde k chybě a žádné změny nejsou provedeny.

1 specifikuje, že změny článku způsobují opětovnou inicializaci stávajících odběrů a dává povolení k opětovné inicializaci předplatného.

Viz sekce Poznámky pro vlastnosti, které po změně vyžadují, aby všechna stávající odběrová byla znovu inicializována.

[ @publisher = ] N'publisher'

Specifikuje vydavatele mimo SQL Server. @publisher je sysname s výchozím nastavením NULL.

Note

@publisher by se nemělo používat při změně vlastností článku na SQL Server Publisher.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Remarks

sp_changearticle se používá při replikaci snapshotů a transakční replikaci.

Pokud článek patří publikaci podporující peer-to-peer transakční replikaci, můžete měnit descriptionpouze vlastnosti, ins_cmd, upd_cmd, a del_cmd vlastnosti.

Změna kterékoli z následujících vlastností vyžaduje vygenerování nového snímku a musíte zadat hodnotu pro 1 parametr @force_invalidate_snapshot :

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

Změna kterékoli z následujících vlastností vyžaduje, aby stávající předplatné byla znovu inicializována a musíte zadat hodnotu 1 pro parametr @force_reinit_subscription .

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

V existující publikaci můžete použít sp_changearticle úpravu článku, aniž byste museli celý článek znovu vypustit a přetvořit.

Note

Při změně hodnoty , schema_optionsystém neprovádí bitovou aktualizaci. To znamená, že když nastavíte schema_option s , sp_changearticlemohou být stávající bitová nastavení vypnutá. Pro zachování stávajících nastavení byste měli provést | (BITOVĚ OR) mezi hodnotou, kterou nastavujete, a aktuální hodnotou schema_option, kterou lze určit vykonáním sp_helparticle.

Platné možnosti schématu

Následující tabulka popisuje povolené hodnoty na schema_option základě typu replikace (zobrazeného nahoře) a typu článku (uvedeného v prvním sloupci).

Typ článku Typ replikace – Transakční Typ replikace – Snapshot
logbased Všechny možnosti Všechny možnosti kromě 0x02
logbased manualfilter Všechny možnosti Všechny možnosti kromě 0x02
logbased manualview Všechny možnosti Všechny možnosti kromě 0x02
indexed view logbased Všechny možnosti Všechny možnosti kromě 0x02
indexed view logbased manualfilter Všechny možnosti Všechny možnosti kromě 0x02
indexed view logbased manualview Všechny možnosti Všechny možnosti kromě 0x02
indexed view logbase manualboth Všechny možnosti Všechny možnosti kromě 0x02
proc exec 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000
serializable proc exec 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000
proc schema only 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000
view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, a 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, a 0x80000000
func schema only 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000 0x01, 0x20, , 0x20000x400000, 0x800000, , 0x20000000x8000000, 0x10000000, , 0x20000000, , 0x40000000a0x80000000
indexed view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, a 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000, a 0x80000000

Note

Pro aktualizační schema_option publikace ve frontě musí být hodnota povolena 0x80 . Podporované schema_option hodnoty pro publikace mimo SQL Server jsou: 0x01, , 0x020x10, , 0x40, 0x80a 0x10000x4000.

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

Pouze členové role pevného serveru správce systému nebo role pevné databáze db_owner mohou vykonávat sp_changearticle.