sys.sp_changemergearticle (Transact-SQL)

Gäller för:SQL Server

Ändrar egenskaperna hos en sammanslagningsartikel. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

Syntax

sys.sp_changemergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

Arguments

[ @publication = ] N'publicering'

Namnet på publikationen där artikeln finns. @publication är sysname, utan standard.

[ @article = ] Inte en artikel'

Namnet på artikeln ska ändras. @article är sysname, utan standard.

[ @property = ] N'property'

Egenskapen att ändra sig för den aktuella artikeln och publikationen. @property är sysname och kan vara ett av värdena som listas i följande tabell.

[ @value = ] N'value'

Det nya värdet för den angivna egenskapen. @value är nvarchar(2000) och kan vara ett av värdena som listas i följande tabell.

Denna tabell beskriver artiklarna egenskaperna och värdena för dessa egenskaper.

Property Värden Description
allow_interactive_resolver true Möjliggör användning av en interaktiv resolver för artikeln.
false Inaktiverar användningen av en interaktiv resolver för artikeln.
article_resolver Anpassad resolver för artikeln. Gäller endast en tabellartikel.
check_permissions (bitmap) 0x00 Behörigheter på tabellnivå kontrolleras inte.
0x10 Behörigheter på tabellnivå kontrolleras hos Publisher innan INSERT uttalanden från Subscriber tillämpas hos Publisher.
0x20 Behörigheter på tabellnivå kontrolleras hos Publisher innan UPDATE uttalanden från Subscriber tillämpas hos Publisher.
0x40 Behörigheter på tabellnivå kontrolleras hos Publisher innan DELETE uttalanden hos Subscriber tillämpas hos Publisher.
column_tracking true Slår på spårning av kolumnnivå. Gäller endast en tabellartikel.

Notera: Kolumnnivåspårning kan inte användas när man publicerar tabeller med fler än 246 kolumner.
false Stänger av kolumnnivåspårning och lämnar konfliktupptäckten på radnivå. Gäller endast en tabellartikel.
compensate_for_errors true Kompenserande åtgärder utförs när fel uppstår under synkroniseringen. För mer information, se sp_addmergearticle.
false Kompensationsåtgärder utförs inte, vilket är standardbeteendet. För mer information, se sp_addmergearticle.

Viktigt: Även om data i de berörda raderna kan verka vara utanför konvergens, kan ändringar göras så fort du åtgärdar eventuella fel, och data konvergerar. Om källtabellen för en artikel redan är publicerad i en annan publikation, måste värdet av compensate_for_errors vara detsamma för båda artiklarna.
creation_script Sökväg och namn på ett valfritt artikelschemaskript som används för att skapa artikeln i prenumerationsdatabasen.
delete_tracking true DELETE Satser replikeras, vilket är standardbeteendet.
false DELETE Uttalanden replikeras inte.

Viktigt: Att ställa in delete_tracking till false resulterar i icke-konvergens, och raderade rader måste tas bort manuellt.
description Beskrivande inlägg för artikeln.
destination_owner Namnet på ägaren av objektet i prenumerationsdatabasen, om inte dbo.
identity_range bigint som specificerar intervallstorleken som ska användas vid tilldelning av nya identitetsvärden om artikeln har identityrangemanagementoption satt till auto eller auto_identity_range satt till true. Gäller endast en tabellartikel. För mer information, se avsnittet "Merge Replication" i Replicate Identity Columns.
identityrangemanagementoption manual Inaktiverar automatisk hantering av identitetsräckvidd. Markerar identitetskolumner med NOT FOR REPLICATION för att möjliggöra manuell hantering av identitetsintervall. Mer information finns i Replikera identitetskolumner.
none Inaktiverar all identitetsområdeshantering.
logical_record_level_conflict_detection true En konflikt upptäcks om ändringar görs någonstans i den logiska posten. Kräver som logical_record_level_conflict_resolution är inställt på true.
false Standardkonfliktdetektering används enligt specificeringen av column_tracking.
logical_record_level_conflict_resolution true Hela vinstens logiska rekord skriver över det förlorande logiska rekordet.
false Vinnande rader är inte begränsade till den logiska dokumentationen.
partition_options 0 Filtreringen för artikeln är antingen statisk eller ger inte en unik delmängd av data för varje partition, det vill säga en "överlappande" partition.
1 Partitionerna överlappar, och DML-uppdateringar som görs hos prenumeranten kan inte ändra partitionen som en rad tillhör.
2 Filtreringen för artikeln ger icke-överlappande partitioner, men flera prenumeranter kan få samma partition.
3 Filtreringen för artikeln ger icke-överlappande partitioner som är unika för varje prenumeration.

Notera: Om du anger ett värde för 3 för partition_options, kan det bara finnas en prenumeration för varje partition av data i den artikeln. Om en andra prenumeration skapas, där filtreringskriteriet för den nya prenumerationen gäller samma partition som den befintliga, tas den befintliga prenumerationen bort.
pre_creation_command none Om tabellen redan finns hos Abonnenten vidtas ingen åtgärd.
delete Utfärdar en borttagning baserat på WHERE-klausulen i delmängdsfiltret.
drop Tappar bordet innan han skapar det igen.
truncate Förkortar destinationstabellen.
processing_order INT som anger bearbetningsordningen för artiklar i en sammanslagningspublikation.
pub_identity_range bigint som specificerar intervallstorleken som tilldelats en prenumerant med serverprenumeration om artikeln har identityrangemanagementoption satt till auto eller auto_identity_range satt till true. Detta identitetsintervall är reserverat för en återpublicerad prenumerant att tilldela sina egna prenumeranter. Gäller endast en tabellartikel. För mer information, se avsnittet "Merge Replication" i Replicate Identity Columns.
published_in_tran_pub true Artikeln publiceras också i en transaktionell publikation.
false Artikeln publiceras inte heller i en transaktionspublikation.
resolver_info Används för att specificera ytterligare information som krävs av en anpassad resolver. Vissa av Microsoft Resolvers kräver en kolumn som tillhandahålls som indata till resolvern. resolver_info är nvarchar(255), med en standard på NULL. För mer information, se Advanced Merge Replication Conflict - COM-Based Resolvers.
schema_option (bitmap) Mer information finns i avsnittet Kommentarer.
0x00 Inaktiverar skriptning av Snapshot Agent och använder skriptet som tillhandahålls i creation_script.
0x01 Genererar objektskapandeskriptet (CREATE TABLE, CREATE PROCEDURE, och så vidare).
0x10 Genererar ett motsvarande klustrat index.
0x20 Konverterar användardefinierade datatyper till basdatatyper hos prenumeranten. Detta alternativ kan inte användas när det finns en CHECK eller DEFAULT begränsning på en användardefinierad typ (UDT) kolumn, om en UDT-kolumn är en del av primärnyckeln, eller om en beräknad kolumn refererar till en UDT-kolumn.
0x40 Genererar motsvarande icke-klustrade index.
0x80 Inkluderar deklarerad referensiell integritet på primärnycklarna.
0x100 Replikerar användartriggers i en tabellartikel, om definierad.
0x200 Replikerar FRÄMMANDE NYCKEL-begränsningar. Om den refererade tabellen inte är en del av en publikation, replikeras inte alla FOREIGN KEY-begränsningar på en publicerad tabell.
0x400 Replikerar CHECK-begränsningar.
0x800 Replikerar standardinställningar.
0x1000 Replikerar kolumnnivå-sortering.
0x2000 Replikerar utökade egenskaper kopplade till källobjektet för publicerad artikel.
0x4000 Replikerar unika nycklar om de definieras i en tabellartikel.
0x8000 Genererar ALTER TABLE satser när man skriptar begränsningar.
0x10000 Replikerar CHECK-begränsningar som INTE FÖR REPLIKERING så att begränsningarna inte upprätthålls under synkroniseringen.
0x20000 Replikerar FRÄMMANDE NYCKEL-begränsningar som INTE FÖR REPLIKERING så att begränsningarna inte upprätthålls under synkroniseringen.
0x40000 Replikerar filgrupper kopplade till en partitionerad tabell eller index.
0x80000 Replikerar partitionsschemat för en partitionerad tabell.
0x100000 Replikerar partitionsschemat för ett partitionerat index.
0x200000 Replikerar tabellstatistik.
0x400000 Replikerar standardbindningar
0x800000 Replikerar regelbindningar
0x1000000 Replikerar fulltextindexet
0x2000000 XML-schemasamlingar bundna till xml-kolumner replikeras inte.
0x4000000 Replikerar index på xml-kolumner .
0x8000000 Skapa alla scheman som inte redan finns hos abonnenten.
0x10000000 Konverterar xml-kolumner till ntext på prenumeranten.
0x20000000 Konverterar stora objektdatatyper (nvarchar(max),varchar(max) och varbinary(max)) som introducerades i SQL Server 2005 (9.x) till datatyper som stöds på SQL Server 2000 (8.x).
0x40000000 Replikera behörigheter.
0x80000000 Försök att ta bort beroenden till objekt som inte ingår i publikationen.
0x100000000 Använd detta alternativ för att replikera attributet FILESTREAM, om det är angivet i varbinary(max) -kolumner. Specificera inte detta alternativ om du replikerar tabeller till SQL Server 2005 (9.x) prenumeranter. Att replikera tabeller som har FILESTREAM-kolumner till SQL Server 2000 (8.x) Subscribers stöds inte, oavsett hur detta schema-alternativ är inställt. Se relaterat alternativ 0x800000000.
0x200000000 Konverterar datum- och tiddatatyper (datum, tid, datumtidavvikning och datumtid2) som introducerades i SQL Server 2008 (10.0.x) till datatyper som stöds på tidigare versioner av SQL Server.
0x400000000 Replikerar komprimeringsalternativet för data och index. Mer information finns i Datakomprimering.
0x800000000 Ställ in detta alternativ för att lagra FILESTREAM-data i en egen filgrupp hos Prenumeranten. Om detta alternativ inte är inställt lagras FILESTREAM-data i standardfilgruppen. Replikering skapar inte filgrupper; därför, om du sätter detta alternativ måste du skapa filgruppen innan du applicerar snapshoten på Prenumeranten. För mer information om hur du skapar objekt innan du applicerar snapshoten, se Execute Scripts Before and After the Snapshot Is Apply.

Se relaterat alternativ 0x100000000.
0x1000000000 Konverterar användardefinierade typer (UDT) för common language runtime (CLR) till varbinär(max) så att kolumner av typen UDT kan replikeras till prenumeranter som kör SQL Server 2005 (9.x).
0x2000000000 Konverterar hierarkiid-datatypen till varbinary(max) så att kolumner av typen hierarchyid kan replikeras till prenumeranter som kör SQL Server 2005 (9.x). För mer information om hur man använder hierarchyid-kolumner i replikerade tabeller, se hierarchyid data type method reference (referens).
0x4000000000 Replikerar alla filtrerade index i tabellen. Mer information om filtrerade index finns i Skapa filtrerade index.
0x8000000000 Konverterar geografi- och geometridatatyperna till varbinär(max) så att kolumner av dessa typer kan replikeras till prenumeranter som kör SQL Server 2005 (9.x).
0x10000000000 Replikerar index på kolumner för typ , geografi och geometri.
NULL Systemet genererar automatiskt ett giltigt schema-alternativ för artikeln.
status active Det initiala bearbetningsskriptet för att publicera tabellen körs.
unsynced Det initiala bearbetningsskriptet för att publicera tabellen körs nästa gång Snapshot Agent körs.
stream_blob_columns true En dataströmsoptimering används vid replikering av binära stora objektkolumner. Dock kan vissa funktioner för sammanslagningsreplikering, såsom logiska poster, fortfarande förhindra att strömoptimering används. stream_blob_columns är satt till true när FILESTREAM är aktiverad. Detta möjliggör att replikering av FILESTREAM-data fungerar optimalt och minskar minnesanvändningen. För att tvinga FILESTREAM-tabellartiklar att inte använda blob-strömning, sätt stream_blob_columns till false.

Viktigt: Att aktivera denna minnesoptimering kan skada prestandan hos Merge Agent under synkronisering. Detta alternativ bör endast användas vid replikering av kolumner som innehåller megabyte data.
false Optimeringen används inte vid replikering av binära stora objektkolumner.
subscriber_upload_options 0 Inga begränsningar för uppdateringar gjorda hos en prenumerant med klientprenumeration; ändringar laddas upp till Publisher. Att ändra denna egenskap kan kräva att befintliga prenumeranter ominitieras.
1 Ändringar är tillåtna hos en prenumerant med klientprenumeration, men de laddas inte upp till Publisher.
2 Ändringar är inte tillåtna hos en prenumerant med klientprenumeration.
subset_filterclause WHERE-klausulen specificerar horisontell filtrering. Gäller endast en tabellartikel.

Viktigt: Av prestandaskäl rekommenderade vi att du inte tillämpar funktioner på kolumnnamn i parameteriserade radfilterklausuler, såsom LEFT([MyColumn]) = SUSER_SNAME(). Om du använder HOST_NAME i en filterklausul och åsidosätter värdet HOST_NAME kan du behöva konvertera datatyper med hjälp av CONVERT. För mer information om bästa praxis i detta fall, se avsnittet "Att överskriva HOST_NAME()-värdet" i Parameterized Filters - Parameterized Row Filters.
threshold Procentantalat värde som används för prenumeranter som kör SQL Server Compact eller tidigare versioner av SQL Server. thresholdstyr när Merge Agent tilldelar ett nytt identitetsintervall. När procentandelen värden som anges i tröskelvärdet används, skapar Merge Agent ett nytt identitetsintervall. Används när identityrangemanagementoption är satt till auto eller auto_identity_range är satt till true. Gäller endast en tabellartikel. För mer information, se avsnittet "Merge Replication" i Replicate Identity Columns.
verify_resolver_signature 1 Digital signatur på en anpassad resolver verifieras för att avgöra om den kommer från en betrodd källa.
0 Digital signatur på en anpassad resolver verifieras inte för att avgöra om den kommer från en betrodd källa.
NULL (standardinställning) Returnerar listan över stödda värden för @property.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Erkänner att åtgärden som utförs av denna lagrade procedur kan ogiltigförklara en befintlig snapshot. @force_invalidate_snapshot är bit, med standardvärdet 0.

  • 0 specificerar att ändringar i sammanslagningsartikeln inte gör att snapshoten blir ogiltig. Om den lagrade proceduren upptäcker att ändringen kräver en ny snapshot, uppstår ett fel och inga ändringar görs.

  • 1 innebär att ändringar i sammanslagningsartikeln kan göra att snapshoten blir ogiltig, och om det finns befintliga prenumerationer som kräver en ny snapshot, ger det tillstånd att markera den befintliga snapshoten som föråldrad och generera en ny snapshot.

Se avsnittet Kommentarer för de egenskaper som, när de ändras, kräver generering av en ny ögonblicksbild.

[ @force_reinit_subscription = ] force_reinit_subscription

Erkänner att åtgärden som utförs av denna lagrade procedur kan kräva att befintliga prenumerationer initialiseras om. @force_reinit_subscription är lite, med standardvärdet 0.

  • 0 specificerar att ändringar i sammanslagningsartikeln inte gör att prenumerationen återinitieras. Om den lagrade proceduren upptäcker att ändringen skulle kräva att befintliga prenumerationer initieras om, uppstår ett fel och inga ändringar görs.

  • 1 innebär att ändringar i sammanslagningsartikeln gör att befintliga prenumerationer ominitieras, och ger behörighet för prenumerationsominitiering.

Se avsnittet Kommentarer för de egenskaper som, när de ändras, kräver att alla befintliga prenumerationer initieras om.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_changemergearticle används vid sammanslagningsreplikation.

Eftersom sp_changemergearticle används för att ändra artikelegenskaper som ursprungligen specificerades med sp_addmergearticle, se sp_addmergearticle för mer information om dessa egenskaper.

Att ändra följande egenskaper kräver att en ny snapshot genereras, och du måste ange ett värde på 1 för @force_invalidate_snapshot-parametern:

  • check_permissions
  • column_tracking
  • destination_owner
  • pre_creation_command
  • schema_options
  • subset_filterclause

Att ändra följande egenskaper kräver att befintliga prenumerationer initieras om, och du måste ange ett värde på 1 för @force_reinit_subscription-parametern :

  • check_permissions
  • column_tracking
  • destination_owner
  • pre_creation_command
  • identityrangemanagementoption
  • subscriber_upload_options
  • subset_filterclause
  • creation_script
  • schema_option
  • logical_record_level_conflict_detection
  • logical_record_level_conflict_resolution

När du anger ett värde för 3 , partition_optionsrensas metadata när Merge Agent körs och den partitionerade snapshoten går ut snabbare. När du använder detta alternativ bör du överväga att aktivera en av abonnenten begärd partitionerad snapshot. För mer information, se Skapa en ögonblicksbild för en sammanslagningspublikation med parameteriserade filter.

När egenskapen column_tracking sätts, om tabellen redan är publicerad i andra sammanslagningspublikationer, måste kolumnspårningen vara samma som värdet som används av befintliga artiklar baserade på denna tabell. Denna parameter är endast för tabellartiklar.

Om flera publikationer publicerar artiklar baserade på samma underliggande tabell, leder en ändring delete_tracking av egenskapen eller egenskapen compensate_for_errors för en artikel till att samma ändring görs i de andra artiklarna som är baserade på samma tabell.

Om Publisher-inloggningen/användarkontot som används av sammanslagningsprocessen inte har rätt tabellbehörigheter, loggas de ogiltiga ändringarna som konflikter.

När du ändrar värdet på schema_option, utför systemet ingen bitvis uppdatering. Detta innebär att när du sätter schema_option att använda sp_changemergearticle, kan befintliga bitinställningar stängas av. För att behålla de befintliga inställningarna bör du utföra & (Bitvis OCH) mellan värdet du sätter och det aktuella värdet av schema_option, vilket kan bestämmas genom att köra sp_helpmergearticle.

Caution

När du har många (kanske hundratals) artiklar i en publikation och skriver sp_changemergearticle för en av artiklarna kan det ta lång tid att slutföra sin text.

Giltig schemaoptionstabell

Följande tabell beskriver de tillåtna schema_option värdena, beroende på artikeltyp.

Artikeltyp Schemaoptionsvärden
func schema only 0x01 och 0x2000
indexed view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, , 0x1000000och 0x200000
proc schema only 0x01 och 0x2000
table Alla alternativ.
view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, , 0x1000000och 0x200000

Examples

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Permissions

Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_changemergearticle.