Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure 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.
falseindikerar att det inte finns någon vertikal filtrering och publicerar alla kolumner.falserensar alla kolumner utom den deklarerade primärnyckeln ochROWGUIDkolumnerna. Kolumner läggs till genom att användasp_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
0specificerar att signaturen inte är verifierad.1specificerar 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.
0specificerar 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.1specificerar 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å1nä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.
0specificerar 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.1innebär att ändringar i sammanslagningsartikeln gör att befintliga prenumerationer ominitieras, och ger behörighet för prenumerationsominitiering. @force_reinit_subscription sätts till1nä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.
falsespecificerar att en konflikt upptäcks om ändringar görs någonstans i den logiska posten.falsespecificerar att standardkonfliktdetektering används enligt @column_tracking. 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_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.
falsespecificerar att hela den vinnande logiska posten skriver över den förlorande logiska posten.falsespecificerar 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.