sys.sp_addmergearticle (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Lägger till en artikel i en befintlig sammanslagningspublikation. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

Syntax

sys.sp_addmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @source_object = ] N'source_object'
    [ , [ @type = ] N'type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @column_tracking = ] N'column_tracking' ]
    [ , [ @status = ] N'status' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @subset_filterclause = ] N'subset_filterclause' ]
    [ , [ @article_resolver = ] N'article_resolver' ]
    [ , [ @resolver_info = ] N'resolver_info' ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @verify_resolver_signature = ] verify_resolver_signature ]
    [ , [ @destination_object = ] N'destination_object' ]
    [ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
    [ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
    [ , [ @check_permissions = ] check_permissions ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
    [ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
    [ , [ @partition_options = ] partition_options ]
    [ , [ @processing_order = ] processing_order ]
    [ , [ @subscriber_upload_options = ] subscriber_upload_options ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @delete_tracking = ] N'delete_tracking' ]
    [ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
    [ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]

Arguments

[ @publication = ] N'publicering'

Namnet på publikationen som innehåller artikeln. @publication är sysname, utan standard.

[ @article = ] Inte en artikel'

Namnet på artikeln. Namnet måste vara unikt inom publikationen. @article är sysname, utan standard. @article måste vara på den lokala datorn som kör SQL Server och måste följa reglerna för identifierare.

[ @source_object = ] N'source_object'

Databasobjektet som ska publiceras. @source_object är sysname, utan standard. För mer information om vilka typer av objekt som kan publiceras med merg-replikering, se Publicera data och databasobjekt.

[ @type = ] Inte typ'

Typen av artikel. @type är sysname, med standardvärdet , tableoch kan vara ett av följande värden.

Value Description
table (standardinställning) Tabell med schema och data. Replikering övervakar tabellen för att avgöra data som ska replikeras.
func schema only Fungerar endast med schema.
indexed view schema only Indexerad vy med endast schema.
proc schema only Lagrad procedur med endast schema.
synonym schema only Endast synonym med schema.
view schema only Visa endast med schema.

[ @description = ] Ingen beskrivning'

En beskrivning av artikeln. @description är nvarchar(255), med en standard på NULL.

[ @column_tracking = ] N'column_tracking'

Inställningen för kolumnnivåspårning. @column_tracking är nvarchar(10), med en standard på false. false Slår på kolumnspårning. false Stänger av kolumnspårning och lämnar konfliktdetektering på radnivå. Om tabellen redan är publicerad i andra sammanslagningspublikationer måste du använda samma kolumnspårningsvärde som används av befintliga artiklar baserade på denna tabell. Denna parameter är endast för tabellartiklar.

Note

Om radspårning används för konfliktdetektering (standard) kan bastabellen innehålla maximalt 1 024 kolumner, men kolumner måste filtreras från artikeln så att maximalt 246 kolumner publiceras. Om kolumnspårning används kan bastabellen innehålla högst 246 kolumner.

[ @status = ] Nej status'

Artikelns status. @status är nvarchar(10), med en standard på unsynced. Om active, körs det initiala bearbetningsskriptet för att publicera tabellen. Om unsynced, körs det initiala bearbetningsskriptet för att publicera tabellen vid nästa gång Snapshot Agent körs.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

Specificerar vad systemet ska göra om tabellen finns hos prenumeranten när snapshoten appliceras. @pre_creation_cmd är nvarchar(10) och kan vara ett av följande värden.

Value Description
none Om tabellen redan finns hos Abonnenten vidtas ingen åtgärd.
delete Utfärdar en borttagning baserat på WHERE-klausulen i delmängdsfiltret.
drop (standardinställning) Tappar bordet innan han skapar det igen. Krävs för att stödja SQL Server Compact-abonnenter.
truncate Förkortar destinationstabellen.

[ @creation_script = ] N'creation_script'

Sökvägen och namnet på ett valfritt artikelschemaskript som används för att skapa artikeln i prenumerationsdatabasen. @creation_script är nvarchar(255), med en standard på NULL.

Note

Skapandeskript körs inte på SQL Server Compact-abonnenter.

[ @schema_option = ] schema_option

En bitmap av schemagenereringsalternativet för den givna artikeln. @schema_option är varbinär(8) och kan vara | (Bitwise OR) produkten av ett eller flera av dessa värden.

Value Description
0x00 Inaktiverar skriptning av Snapshot Agent och använder det tillhandahållna schema-förskapandeskriptet som definieras i @creation_script.
0x01 Genererar objektskapandet (CREATE TABLE, CREATE PROCEDURE, och så vidare). Detta är standardvärdet för artiklar om lagrad procedur.
0x10 Genererar ett motsvarande klustrat index. Även om detta alternativ inte är satt, genereras index relaterade till primärnycklar och UNIQUE begränsningar om de redan är definierade i en publicerad tabell.
0x20 Konverterar användardefinierade datatyper (UDT) till basdatatyper hos prenumeranten. Detta alternativ kan inte användas när det finns en CHECK eller DEFAULT begränsning på en 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. Även om detta alternativ inte är satt, genereras index relaterade till primärnycklar och UNIQUE begränsningar om de redan är definierade i en publicerad tabell.
0x80 Replikerar PRIMARY KEY begränsningar. Alla index relaterade till begränsningen replikeras också, även om options 0x10 och 0x40 inte är aktiverade.
0x100 Replikerar användartriggers i en tabellartikel, om definierad.
0x200 Replikerar FOREIGN KEY 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 UNIQUE begränsningar. Alla index relaterade till begränsningen replikeras också, även om options 0x10 och 0x40 inte är aktiverade.
0x8000 Detta alternativ gäller inte för Publishers som kör SQL Server 2005 (9.x) och senare versioner.
0x10000 Replikerar CHECK begränsningar så NOT FOR REPLICATION att begränsningarna inte upprätthålls under synkroniseringen.
0x20000 Replikerar FOREIGN KEY begränsningar så NOT FOR REPLICATION 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 Skapar alla scheman som inte redan finns på 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 Replikerar behörigheter.
0x80000000 Försöker släppa 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.

Om detta värde är NULL, genererar systemet automatiskt ett giltigt schemaalternativ för artikeln. Tabellen för standardschema visar värdet som väljs baserat på artikeltypen. Dessutom gäller inte alla @schema_option värden för varje typ av replikation och artikeltyp. Tabellen för giltigt schema visar vilka alternativ som kan specificeras för en given artikeltyp.

Note

Parametern @schema_option påverkar endast replikationsalternativen för den initiala snapshoten. När det initiala schemat har genererats av Snapshot Agent och applicerats på prenumeranten, sker replikering av ändringar i publiceringsschemat till prenumeranten baserat på schemaändringars replikationsregler och den @replicate_ddl parameterinställning som anges i sp_addmergepublication. Mer information finns i Göra schemaändringar i publikationsdatabaser.

[ @subset_filterclause = ] N'subset_filterclause'

En WHERE-klausul som specificerar horisontell filtrering av en tabellartikel utan ordet WHERE inkluderat. @subset_filterclause är nvarchar(1000), med en tom sträng som standard.

Important

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 HOST_NAME värdet kan du behöva konvertera datatyper med 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.

[ @article_resolver = ] N'article_resolver'

Den COM-baserade resolvern som används för att lösa konflikter i tabellartikeln eller i .NET Framework-assembleren som anropas för att köra anpassad affärslogik i tabellartikeln. @article_resolver är nvarchar(255), med en standard på NULL. Tillgängliga värden för denna parameter listas i Microsoft Custom Resolvers. Om värdet som anges inte är en av Microsoft-resolvers, använder SQL Server den angivna resolvern istället för den systemmedföljande resolvern. Använd sp_enumcustomresolvers för att räkna upp listan över tillgängliga anpassade resolvers. För mer information, se Execute Business Logic During Merge Synchronization and Advanced Merge Replication - Conflict Detection and Resolution.

[ @resolver_info = ] N'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(517), med en standard på NULL. För mer information, se Advanced Merge Replication Conflict - COM-Based Resolvers.

[ @source_owner = ] N'source_owner'

Namnet på ägaren till @source_object. @source_owner är sysname, med standardvärdet .NULL Om NULL, antas den nuvarande användaren vara ägaren.

[ @destination_owner = ] N'destination_owner'

Ägaren av objektet i prenumerationsdatabasen, om inte dbo. @destination_owner är sysname, med standardvärdet .NULL Om NULL, dbo antas vara ägaren.

[ @vertical_partition = ] N'vertical_partition'

Aktiverar och inaktiverar kolumnfiltrering på en tabellartikel. @vertical_partition är nvarchar(5), med en standard på false.

  • false indikerar att det inte finns någon vertikal filtrering och publicerar alla kolumner.

  • false rensar alla kolumner utom den deklarerade primärnyckeln och ROWGUID kolumnerna. Kolumner läggs till genom att använda sp_mergearticlecolumn.

[ @auto_identity_range = ] N'auto_identity_range'

Aktiverar och inaktiverar automatisk hantering av identitetsintervall för denna tabellartikel i en publikation vid tidpunkten för dess skapande. @auto_identity_range är nvarchar(5), med en standard på NULL. false möjliggör automatisk hantering av identitetsräckvidd, samtidigt som false den inaktiveras.

Note

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript. Du bör använda @identityrangemanagementoption för att specificera alternativ för hantering av identitetsområde. Mer information finns i Replikera identitetskolumner.

[ @pub_identity_range = ] pub_identity_range

Styr storleken på identitetsintervallet som tilldelas en abonnent med serverprenumeration när automatisk identitetsintervallhantering används. Detta identitetsintervall är reserverat för en återpublicerad prenumerant att tilldela sina egna prenumeranter. @pub_identity_range är bigint, med standardvärdet .NULL Du måste specificera denna parameter om @identityrangemanagementoption är auto eller om @auto_identity_range är false.

[ @identity_range = ] identity_range

Kontrollerar storleken på identitetsintervallet som tilldelas både Publisher och Subscriber när automatisk identitetsområdeshantering används. @identity_range är bigint, med standardvärdet .NULL Du måste specificera denna parameter om @identityrangemanagementoption är auto eller om @auto_identity_range är false.

Note

@identity_range styr identitetsintervallets storlek vid återpublicering av prenumeranter med tidigare versioner av SQL Server.

[ @threshold = ] tröskel

Procentvärde som styr när Merge Agent tilldelar ett nytt identitetsintervall. När procentandelen värden som anges i @threshold används skapar Merge Agent ett nytt identitetsintervall. @threshold är int, med standardvärdet .NULL Du måste specificera denna parameter om @identityrangemanagementoption är auto eller om @auto_identity_range är false.

[ @verify_resolver_signature = ] verify_resolver_signature

Specificerar om en digital signatur verifieras innan en resolver används vid sammanslagningsreplikering. @verify_resolver_signature är int, med standardvärdet .1

  • 0 specificerar att signaturen inte är verifierad.

  • 1 specificerar att signaturen verifieras för att se om den kommer från en betrodd källa.

[ @destination_object = ] N'destination_object'

Namnet på objektet i prenumerationsdatabasen. @destination_object är sysname, med ett standardvärde för det som finns i @source_object. Denna parameter kan endast specificeras om artikeln är en schema-enbart artikel, såsom lagrade procedurer, vyer och UDF:er. Om artikeln som anges är en tabellartikel åsidosätter värdet i @source_object värdet i @destination_object.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

Aktiverar eller inaktiverar användningen av Interactive Resolver på en artikel. @allow_interactive_resolver är nvarchar(5), med standardvärdet .false false möjliggör användning av Interactive Resolver på artikeln; false inaktiverar den.

Note

Interactive Resolver stöds inte av SQL Server Compact-abonnenter.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

[ @check_permissions = ] check_permissions

En bitmap över tabellnivåbehörigheter som verifieras när Merge Agent tillämpar ändringar på Publisher. Om Publisher-inloggningen/användarkontot som används av sammanslagningsprocessen inte har rätt tabellbehörigheter, loggas de ogiltiga ändringarna som konflikter. @check_permissions är int, och kan vara | (Bitwise OR) produkten av ett eller flera av följande värden.

Value Description
0x00 (standardinställning) Behörigheter kontrolleras inte.
0x10 Kontrollerar behörigheter hos Publisher innan insättningsoperationer som görs hos en Subscriber kan laddas upp.
0x20 Kontrollerar behörigheter hos Publisher innan uppdateringar som görs hos en Subscriber kan laddas upp.
0x40 Kontrollerar behörigheter hos Publisher innan borttagningsoperationer som görs hos en prenumerant kan laddas upp.

[ @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 tillägg av en artikel inte gör snapshoten ogiltig. Om den lagrade proceduren upptäcker att ändringen kräver en ny snapshot, uppstår ett fel och inga ändringar görs.

  • 1 specificerar att tillägg av en artikel kan göra snapshoten ogiltig, och om det finns befintliga prenumerationer som kräver en ny snapshot, ges tillåtelse att den befintliga snapshoten markeras som föråldrad och en ny snapshot genereras. @force_invalidate_snapshot ställs in på 1 när man lägger till en artikel i en publikation med en befintlig snapshot.

[ @published_in_tran_pub = ] N'published_in_tran_pub'

Indikerar att en artikel i en sammanslagningspublikation också publiceras i en transaktionspublikation. @published_in_tran_pub är nvarchar(5), med standardvärdet .false false specificerar att artikeln även publiceras i en transaktionspublikation.

[ @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 tillägg av en artikel inte gör att prenumerationen initialiseras igen. Om den lagrade proceduren upptäcker att ändringen kräver att befintliga prenumerationer initialiseras om, uppstår ett fel och inga ändringar göras.

  • 1 innebär att ändringar i sammanslagningsartikeln gör att befintliga prenumerationer ominitieras, och ger behörighet för prenumerationsominitiering. @force_reinit_subscription sätts till 1 när @subset_filterclause specificerar ett parameteriserat radfilter.

[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'

Specificerar nivån av konfliktdetektering för en artikel som är medlem i en logisk post. @logical_record_level_conflict_detection är nvarchar(5), med en standard på false.

Note

Eftersom logiska poster inte stöds av SQL Server Compact-abonnenter måste du ange ett värde på false för att @logical_record_level_conflict_detection ska stödja dessa prenumeranter.

[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'

Specificerar nivån av konfliktlösning för en artikel som är medlem i en logisk post. @logical_record_level_conflict_resolution är nvarchar(5), med en standard på false.

  • false specificerar att hela den vinnande logiska posten skriver över den förlorande logiska posten.

  • false specificerar att vinnande rader inte är begränsade till den logiska posten.

Om @logical_record_level_conflict_detection är false, måste @logical_record_level_conflict_resolution också sättas till false. Mer information finns i Gruppera ändringar i relaterade rader med logiska poster.

Note

Eftersom logiska poster inte stöds av SQL Server Compact-abonnenter måste du ange ett värde på false för att @logical_record_level_conflict_resolution ska stödja dessa prenumeranter.

[ @partition_options = ] partition_options

Definierar hur data i artikeln partitioneras, vilket möjliggör prestandaoptimeringar när alla rader tillhör endast en partition eller endast en prenumeration. @partition_options är tinyint och kan vara ett av följande värden.

Value Description
0 (standardinställning) 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 uppdateringar av datamanipulationsspråk (DML) 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.

Note

Om källtabellen för en artikel redan är publicerad i en annan publikation måste värdet av @partition_options vara detsamma för båda artiklarna.

[ @processing_order = ] processing_order

Anger bearbetningsordningen för artiklar i en sammanslagningspublikation. @processing_order är int, med en standard på 0. 0 specificerar att artikeln är oordnad, och att alla andra värden representerar ordningsvärdet för bearbetningsordningen för denna artikel. Artiklar bearbetas i ordning från lägsta till högsta värde. Om två artiklar har samma värde bestäms bearbetningsordningen av ordningen på artikelns smeknamn i sysmergeartikelsystemets tabell. För mer information, se Specificera egenskaper för sammanslagning av replikering.

[ @subscriber_upload_options = ] subscriber_upload_options

Definierar begränsningar för uppdateringar gjorda hos en prenumerant med klientprenumeration. Mer information finns i Optimera prestanda för sammanslagningsreplikering med Download-Only artiklar. @subscriber_upload_options är tinyint och kan vara ett av följande värden.

Value Description
0 (standardinställning) Inga begränsningar. Ändringar som görs hos prenumeranten laddas upp till Publisher.
1 Ändringar är tillåtna hos prenumeranten, men de laddas inte upp till Publisher.
2 Ändringar är inte tillåtna hos prenumeranten.

Att byta @subscriber_upload_options kräver att prenumerationen initieras om genom att ringa sp_reinitmergepullsubscription.

Note

Om källtabellen för en artikel redan är publicerad i en annan publikation måste värdet av @subscriber_upload_options vara detsamma för båda artiklarna.

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

Specificerar hur identitetsområdeshantering hanteras för artikeln. @identityrangemanagementoption är nvarchar(10) och kan vara ett av följande värden.

Value Description
none Inaktiverar identitetsräckviddshantering.
manual Markerar identitetskolumnen med NOT FOR REPLICATION för att möjliggöra manuell hantering av identitetsintervall.
auto Specificerar automatisk hantering av identitetsintervall.
NULL (standardinställning) Går till none när värdet på @auto_identity_range inte trueär det.

För bakåtkompatibilitet, när värdet av @identityrangemanagementoption är NULL, kontrolleras värdet av @auto_identity_range . Men när värdet av @identityrangemanagementoption inte NULLär , ignoreras värdet av @auto_identity_range . Mer information finns i Replikera identitetskolumner.

[ @delete_tracking = ] N'delete_tracking'

Indikerar om raderingar replikeras. @delete_tracking är nvarchar(5), med en standard på true. false indikerar att raderingar inte replikeras, och true indikerar att raderingar replikeras, vilket är det vanliga beteendet vid sammanslagningsreplikering. När @delete_tracking är inställd till false, måste rader som raders borttagna vid Prenumeranten manuellt tas bort vid Publisher, och rader borttagna vid Publisher måste manuellt tas bort vid Prenumeranten.

Important

Att ställa @delete_tracking till false resulterar i icke-konvergens. Om källtabellen för en artikel redan är publicerad i en annan publikation måste värdet av @delete_tracking vara detsamma för båda artiklarna.

Note

@delete_tracking alternativ kan inte ställas in med hjälp av New Publication Wizard eller dialogrutan Publication Properties .

[ @compensate_for_errors = ] N'compensate_for_errors'

Indikerar om kompensationsåtgärder vidtas när fel uppstår under synkroniseringen. @compensate_for_errors är nvarchar(5), med standardvärdet .false När den sätts till true, leder ändringar som inte kan tillämpas på en Subscriber eller Publisher under synkronisering alltid till kompensationsåtgärder för att ångra ändringen; dock kan en felaktigt konfigurerad Subscriber som genererar ett fel orsaka att ändringar hos andra Abonnenter och Publishers återställs. false inaktiverar dessa kompensationsåtgärder, men felen loggas fortfarande som med kompensation och efterföljande sammanslagningar fortsätter att försöka tillämpa ändringarna tills de lyckas.

Important

Ä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.

[ @stream_blob_columns = ] N'stream_blob_columns'

Specificerar att en dataströmsoptimering ska användas vid replikering av binära stora objektkolumner. @stream_blob_columns är nvarchar(5), med en standard på false. true vilket innebär att optimeringen kommer att försökas. @stream_blob_columns är inställd på 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 streaming, använd sp_changemergearticle för att sätta @stream_blob_columns till false.

Important

Att aktivera denna minnesoptimering kan minska prestandan för Merge Agent under synkronisering. Detta alternativ bör endast användas vid replikering av kolumner som innehåller megabyte data.

Note

Vissa sammanslagningsreplikationsfunktioner, såsom logiska poster, kan fortfarande förhindra att strömoptimering används vid replikering av binära stora objekt även med @stream_blob_columns satt till true.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_addmergearticle används vid sammanslagningsreplikation.

När du publicerar objekt kopieras deras definitioner till Prenumeranter. Om du publicerar ett databasobjekt som är beroende av ett eller flera andra objekt måste du publicera alla refererade objekt. Om du till exempel publicerar en vy som är beroende av en tabell måste du även publicera tabellen.

Om du anger ett värde på 3 för @partition_options:

  • Det kan bara finnas en prenumeration för varje partition av data i den artikeln. Om ett andra abonnemang skapas där filtreringskriteriet för det nya abonnemanget avgörs till samma partition som det befintliga, tas det befintliga abonnemanget bort.

  • Metadata rensas när Merge Agent körs och den partitionerade snapshoten försvinner 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.

Om du lägger till en artikel med ett statiskt horisontellt filter, med @subset_filterclause, till en befintlig publikation med artiklar som har parametriserade filter, måste prenumerationerna initialiseras om.

När du specificerar @processing_order rekommenderar vi att lämna luckor mellan artikelordningens värden, vilket gör det lättare att sätta nya värden i framtiden. Till exempel, om du har tre artiklar, Article1, , Article2och Article3, sätt @processing_order till 10, 20, och 30, istället för 1, 2, och 3. För mer information, se Specificera egenskaper för sammanslagning av replikering.

Standardschema-alternativstabell

Denna tabell beskriver standardvärdet som den lagrade proceduren anger, om ett NULL värde anges för @schema_option, vilket beror på artikeltyp.

Artikeltyp Schemaoptionsvärde
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1- SQL Server 2005 (9.x) och senare kompatibla publikationer med en native mode-snapshot.

0x08034FF1- SQL Server 2005 (9.x) och senare kompatibla publikationer med teckenlägessnapshot.
view schema only 0x01

Note

Om publikationen stödjer tidigare versioner av SQL Server är 0x30034FF1standardschemaalternativet för table .

Giltig schemaoptionstabell

Följande tabell beskriver de tillåtna värdena @schema_option 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 @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_object = @table1, 
  @type = N'table', 
  @source_owner = @hrschema,
  @schema_option = 0x0004CF1,
  @description = N'article for the Employee table',
  @subset_filterclause = @filterclause;

-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_object = @table2, 
  @type = N'table', 
  @source_owner = @salesschema, 
  @vertical_partition = N'true',
  @schema_option = 0x0034EF1,
  @description = N'article for the SalesOrderDetail table';

-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table3, 
  @source_object = @table3, 
  @source_owner = @salesschema,
  @description = 'article for the SalesOrderHeader table', 
  @identityrangemanagementoption = N'auto', 
  @pub_identity_range = 100000, 
  @identity_range = 100, 
  @threshold = 80,
  @schema_option = 0x0004EF1;

-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @column = N'CreditCardApprovalCode', 
  @operation = N'drop', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @join_articlename = @table1, 
  @join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @join_articlename = @table2, 
  @join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Permissions

Kräver medlemskap i sysadmin bestämd serverroll eller db_owner bestämd databasroll.