sys.sp_addmergearticle (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Voegt een artikel toe aan een bestaande mergepublicatie. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.

Transact-SQL syntaxis-conventies

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'publicatie'

De naam van de publicatie waarin het artikel staat. @publication is sysname, zonder standaard.

[ @article = ] N'artikel'

De naam van het artikel. De naam moet uniek zijn binnen de publicatie. @article is sysname, zonder standaard. @article moet op de lokale computer staan die SQL Server draait en voldoen aan de regels voor identificaties.

[ @source_object = ] N'source_object'

Het databaseobject dat gepubliceerd moet worden. @source_object is een systeemnaam, zonder standaard. Voor meer informatie over de soorten objecten die kunnen worden gepubliceerd met merge-replicatie, zie Publish Data en Database Objects.

[ @type = ] N'type'

Het soort artikel. @type is sysname, met als standaard table, en kan een van de volgende waarden zijn.

Value Description
table (standaard) Tabel met schema en data. Replicatie monitort de tabel om te bepalen welke data gerepliceerd moet worden.
func schema only Functioneer alleen met schema.
indexed view schema only Geïndexeerde weergave met alleen schema.
proc schema only Opgeslagen procedure met alleen schema.
synonym schema only Synoniem met alleen schema.
view schema only Alleen met schema bekijken.

[ @description = ] Geen beschrijving'

Een beschrijving van het artikel. @description is nvarchar(255), met een standaard van NULL.

[ @column_tracking = ] N'column_tracking'

De instelling voor kolomniveau tracking. @column_tracking is nvarchar(10), met een standaard van false. false schakelt kolomtracking in. false Schakelt kolomtracking uit en laat conflictdetectie op rijniveau staan. Als de tabel al is gepubliceerd in andere mergepublicaties, moet je dezelfde kolomvolgwaarde gebruiken als bestaande artikelen op basis van deze tabel. Deze parameter is alleen specifiek voor tabelartikelen.

Note

Als rijtracking wordt gebruikt voor conflictdetectie (de standaard), kan de basistabel maximaal 1.024 kolommen bevatten, maar kolommen moeten uit het artikel worden gefilterd zodat maximaal 246 kolommen worden gepubliceerd. Als kolomtracking wordt gebruikt, kan de basistabel maximaal 246 kolommen bevatten.

[ @status = ] N'status'

De status van het artikel. @status is nvarchar(10), met een standaard van unsynced. Als active, wordt het initiële verwerkingsscript om de tabel te publiceren uitgevoerd. Als unsynced, wordt het initiële verwerkingsscript om de tabel te publiceren uitgevoerd bij de volgende keer dat de Snapshot Agent wordt uitgevoerd.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

Geeft aan wat het systeem moet doen als de tabel bij de abonnee bestaat bij het toepassen van de snapshot. @pre_creation_cmd is nvarchar(10) en kan een van de volgende waarden zijn.

Value Description
none Als de tabel al bestaat bij de abonnee, wordt er geen actie ondernomen.
delete Voert een verwijdering uit op basis van de WHERE-clausule in het subsetfilter.
drop (standaard) Ze laat de tafel vallen voordat hij hem opnieuw aanmaakt. Vereist om SQL Server Compact-abonnees te ondersteunen.
truncate Slaat de bestemmingstabel af.

[ @creation_script = ] N'creation_script'

Het pad en de naam van een optioneel artikelschemascript dat wordt gebruikt om het artikel te maken in de abonnementsdatabase. @creation_script is nvarchar(255), met een standaard van NULL.

Note

Creatiescripts worden niet uitgevoerd op SQL Server Compact Subscribers.

[ @schema_option = ] schema_option

Een bitmap van de optie voor schema-generatie voor het betreffende artikel. @schema_option is varbinair(8) en kan de | zijn (Bitwise OK) product van een of meer van deze waarden.

Value Description
0x00 Schakelt scripting uit door de Snapshot Agent en gebruikt het meegeleverde schema-precreatiescript gedefinieerd in @creation_script.
0x01 Genereert de objectcreatie (CREATE TABLE, CREATE PROCEDURE, enzovoort). Dit is de standaardwaarde voor artikelen over opgeslagen procedures.
0x10 Genereert een overeenkomstige geclusterde index. Zelfs als deze optie niet is ingesteld, worden indexen gerelateerd aan primaire sleutels en UNIQUE beperkingen gegenereerd als ze al gedefinieerd zijn in een gepubliceerde tabel.
0x20 Zet door de gebruiker gedefinieerde datatypes (UDT) om naar basisdatatypes bij de abonnee. Deze optie kan niet worden gebruikt wanneer er een CHECK of DEFAULT constraint is op een UDT-kolom, als een UDT-kolom deel uitmaakt van de primaire sleutel, of als een berekende kolom verwijst naar een UDT-kolom.
0x40 Genereert overeenkomstige niet-geclusterde indexen. Zelfs als deze optie niet is ingesteld, worden indexen gerelateerd aan primaire sleutels en UNIQUE beperkingen gegenereerd als ze al gedefinieerd zijn in een gepubliceerde tabel.
0x80 Repliceert PRIMARY KEY beperkingen. Alle indexen die met de beperking te maken hebben, worden ook gerepliceerd, zelfs als opties 0x10 en 0x40 niet zijn ingeschakeld.
0x100 Repliceert gebruikerstriggers op een tabelartikel, indien gedefinieerd.
0x200 Repliceert FOREIGN KEY beperkingen. Als de gerefereerde tabel geen deel uitmaakt van een publicatie, worden alle FOREIGN KEY beperkingen op een gepubliceerde tabel niet gerepliceerd.
0x400 Repliceert CHECK beperkingen.
0x800 Repliceert standaardinstellingen.
0x1000 Repliceert kolomniveau-collatie.
0x2000 Repliceert uitgebreide eigenschappen die horen bij het bronobject van het gepubliceerde artikel.
0x4000 Repliceert UNIQUE beperkingen. Alle indexen die met de beperking te maken hebben, worden ook gerepliceerd, zelfs als opties 0x10 en 0x40 niet zijn ingeschakeld.
0x8000 Deze optie is niet geldig voor uitgevers die SQL Server 2005 (9.x) en latere versies draaien.
0x10000 Repliceert CHECK beperkingen zodat NOT FOR REPLICATION deze beperkingen niet worden afgedwongen tijdens synchronisatie.
0x20000 Repliceert FOREIGN KEY beperkingen zodat NOT FOR REPLICATION deze beperkingen niet worden afgedwongen tijdens synchronisatie.
0x40000 Repliceert bestandsgroepen die gekoppeld zijn aan een gepartitioneerde tabel of index.
0x80000 Repliceert het partitieschema voor een gepartitioneerde tabel.
0x100000 Repliceert het partitieschema voor een gepartitioneerde index.
0x200000 Repliceert tabelstatistieken.
0x400000 Repliceert standaard bindings.
0x800000 Repliceert regelbindingen.
0x1000000 Kopieert de volledige tekstindex.
0x2000000 XML-schemacollecties die aan xml-kolommen zijn gebonden, worden niet gerepliceerd.
0x4000000 Repliceert indexen op xml-kolommen .
0x8000000 Maakt alle schema's aan die nog niet aanwezig zijn bij de abonnee.
0x10000000 Zet xml-kolommen om naar ntext op de abonnee.
0x20000000 Zet grote objectdatatypes (nvarchar(max),varchar(max) en varbinary(max)) die in SQL Server 2005 (9.x) werden geïntroduceerd om naar datatypes die worden ondersteund op SQL Server 2000 (8.x).
0x40000000 Repliceert permissies.
0x80000000 Pogingen om afhankelijkheden van objecten die geen deel uitmaken van de publicatie los te laten.
0x100000000 Gebruik deze optie om het FILESTREAM attribuut te repliceren als het is opgegeven op varbinary(max) -kolommen. Specificeer deze optie niet als je tabellen repliceert naar SQL Server 2005 (9.x) abonnees. Het repliceren van tabellen met FILESTREAM-kolommen naar SQL Server 2000 (8.x) abonnees wordt niet ondersteund, ongeacht hoe deze schema-optie is ingesteld. Zie gerelateerde optie 0x800000000.
0x200000000 Zet datum- en tijddatatypes (datum, tijd, datumtimeoffset en datetime2) om die in SQL Server 2008 (10.0.x) zijn geïntroduceerd naar datatypen die worden ondersteund op eerdere versies van SQL Server.
0x400000000 Repliceert de compressieoptie voor data en indexen. Zie Gegevenscompressie voor meer informatie.
0x800000000 Stel deze optie in om FILESTREAM-gegevens op te slaan in een eigen bestandsgroep bij de abonnee. Als deze optie niet is ingesteld, wordt FILESTREAM-data opgeslagen in de standaard bestandsgroep. Replicatie maakt geen bestandsgroepen aan; daarom moet je, als je deze optie instelt, de bestandsgroep aanmaken voordat je de snapshot toepast op de Subscriber. Voor meer informatie over hoe je objecten maakt voordat je de snapshot toepast, zie Scripts uitvoeren vóór en na het toepassen van de snapshot.

Zie gerelateerde optie 0x100000000.
0x1000000000 Zet common language runtime (CLR) gebruikersgedefinieerde types (UDT's) om naar varbinary(max) zodat kolommen van type UDT kunnen worden gerepliceerd naar abonnees die SQL Server 2005 (9.x) draaien.
0x2000000000 Zet het datatype hierarchyid om naar varbinary(max) zodat kolommen van type hierarchyid kunnen worden gerepliceerd naar abonnees die SQL Server 2005 (9.x) draaien. Voor meer informatie over hoe je hierarchyid-kolommen gebruikt in gerepliceerde tabellen, zie hierarchyid data type method reference.
0x4000000000 Repliceert alle gefilterde indexen in de tabel. Zie Gefilterde indexen maken voor meer informatie over gefilterde indexen.
0x8000000000 Zet de geografie- en geometrie-datatypes om naar varbinary(max) zodat kolommen van deze typen kunnen worden gerepliceerd naar abonnees die SQL Server 2005 (9.x) draaien.
0x10000000000 Repliceert indexen op kolommen van type, geografie en geometrie.

Als deze waarde is NULL, genereert het systeem automatisch een geldige schema-optie voor het artikel. De optie tabel voor het standaardschema toont de waarde die wordt gekozen op basis van het artikeltype. Ook zijn niet alle @schema_option waarden geldig voor elk type replicatie en artikeltype. De tabel met de optie Geldig schema toont de opties die voor een bepaald artikeltype kunnen worden gespecificeerd.

Note

De @schema_option-parameter beïnvloedt alleen replicatie-opties voor de initiële snapshot. Zodra het initiële schema door de Snapshot Agent is gegenereerd en toegepast op de abonnee, vindt de replicatie van publicatieschemawijzigingen aan de abonnee plaats op basis van schemawijzigingsreplicatieregels en de @replicate_ddl parameterinstelling die in sp_addmergepublication is gespecificeerd. Zie Schemawijzigingen aanbrengen in publicatiedatabasesvoor meer informatie.

[ @subset_filterclause = ] N'subset_filterclause'

Een WHERE-clausule die de horizontale filtering van een tabelartikel specificeert zonder het woord WHERE erbij te bevatten. @subset_filterclause is nvarchar(1000), met als standaard een lege string.

Important

Om prestatieredenen raden we aan geen functies toe te passen op kolomnamen in geparametriseerde rijfilterclausules, zoals LEFT([MyColumn]) = SUSER_SNAME(). Als je HOST_NAME gebruikt in een filterclausule en de HOST_NAME waarde overschrijft, moet je mogelijk datatypes converteren met CONVERT. Voor meer informatie over best practices in dit geval, zie de sectie "Overschrijven van de HOST_NAME() Waarde" in Parameterized Filters - Parameterized Row Filters.

[ @article_resolver = ] N'article_resolver'

De COM-gebaseerde resolver die wordt gebruikt om conflicten op het tabelartikel of de .NET Framework-assembly op te lossen die wordt aangeroepen om aangepaste bedrijfslogica uit te voeren op het tabelartikel. @article_resolver is nvarchar(255), met een standaard van NULL. Beschikbare waarden voor deze parameter worden vermeld in Microsoft Custom Resolvers. Als de opgegeven waarde niet een van de Microsoft-resolvers is, gebruikt SQL Server de gespecificeerde resolver in plaats van de door het systeem geleverde resolver. Gebruik sp_enumcustomresolvers om de lijst met beschikbare aangepaste resolvers op te sommen. Voor meer informatie, zie Uitvoeren van bedrijfslogica tijdens samensmeltingssynchronisatie en geavanceerde samenvoegingsreplicatie - conflictdetectie en -oplossing.

[ @resolver_info = ] N'resolver_info'

Gebruikt om aanvullende informatie te specificeren die vereist is door een aangepaste resolver. Sommige Microsoft Resolvers vereisen een kolom die als invoer voor de resolver wordt geleverd. @resolver_info is nvarchar(517), met als standaard .NULL Voor meer informatie, zie Advanced Merge Replication Conflict - COM-Based Resolvers.

[ @source_owner = ] N'source_owner'

De naam van de eigenaar van de @source_object. @source_owner is sysname, met als standaard .NULL Als NULL, wordt aangenomen dat de huidige gebruiker de eigenaar is.

[ @destination_owner = ] N'destination_owner'

De eigenaar van het object in de abonnementsdatabase, zo niet dbo. @destination_owner is sysname, met als standaard .NULL Als NULL, dbo wordt aangenomen de eigenaar te zijn.

[ @vertical_partition = ] N'vertical_partition'

Schakelt kolomfiltering in en uit op een tabelartikel. @vertical_partition is nvarchar(5), met als standaard .false

  • false geeft aan dat er geen verticale filtering is en publiceert alle kolommen.

  • false verwijdert alle kolommen behalve de gedeclareerde primaire sleutel en ROWGUID kolommen. Kolommen worden toegevoegd door gebruik te maken van sp_mergearticlecolumn.

[ @auto_identity_range = ] N'auto_identity_range'

Schakelt automatische identiteitsbereikafhandeling in voor dit tabelartikel in een publicatie op het moment dat deze wordt aangemaakt in en uit te schakelen. @auto_identity_range is nvarchar(5), met een standaard van NULL. false Automatische afhandeling false van identiteitsbereik mogelijk maakt het uitschakelen.

Note

Deze parameter is verouderd en wordt behouden voor achterwaartse compatibiliteit van scripts. Je zou @identityrangemanagementoption moeten gebruiken om opties voor het beheer van identiteitsbereik te specificeren. Zie Identiteitskolommen repliceren voor meer informatie.

[ @pub_identity_range = ] pub_identity_range

Beheert de identiteitsbereikgrootte die aan een abonnee is toegewezen met een serverabonnement wanneer automatisch identiteitsbereikbeheer wordt gebruikt. Deze identiteitsreeks is gereserveerd voor een heruitgevende abonnee, die aan zijn eigen abonnees kan worden toegewezen. @pub_identity_range is bigint, met als standaard .NULL Je moet deze parameter specificeren als @identityrangemanagementoption is auto of als @auto_identity_range is false.

[ @identity_range = ] identity_range

Beheert de identiteitsbereik die zowel aan de Publisher als aan de abonnee is toegewezen wanneer automatisch identiteitsbereikbeheer wordt gebruikt. @identity_range is bigint, met als standaard .NULL Je moet deze parameter specificeren als @identityrangemanagementoption is auto of als @auto_identity_range is false.

Note

@identity_range bepaalt de grootte van de identiteitsbereik bij het herpubliceren van abonnees die eerdere versies van SQL Server gebruiken.

[ @threshold = ] drempel

Percentagewaarde die bepaalt wanneer de Merge Agent een nieuw identiteitsbereik toewijst. Wanneer het percentage waarden dat in @threshold is gespecificeerd wordt gebruikt, creëert de Merge Agent een nieuw identiteitsbereik. @threshold is int, met een standaard van NULL. Je moet deze parameter specificeren als @identityrangemanagementoption is auto of als @auto_identity_range is false.

[ @verify_resolver_signature = ] verify_resolver_signature

Geeft aan of een digitale handtekening wordt geverifieerd voordat een resolver wordt gebruikt bij merge-replicatie. @verify_resolver_signature is int, met als standaard .1

  • 0 Geeft aan dat de handtekening niet is geverifieerd.

  • 1 specificeert dat de handtekening wordt geverifieerd om te zien of deze van een betrouwbare bron komt.

[ @destination_object = ] N'destination_object'

De naam van het object in de abonnementsdatabase. @destination_object is een systeemnaam, met een standaardwaarde van wat er in @source_object staat. Deze parameter kan alleen worden gespecificeerd als het artikel een schema-only artikel is, zoals opgeslagen procedures, views en UDF's. Als het gespecificeerde artikel een tabelartikel is, overschrijft de waarde in @source_object de waarde in @destination_object.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

Schakelt het gebruik van de Interactieve Resolver op een artikel in of schakelt het uit. @allow_interactive_resolver is nvarchar(5), met als standaard .false false maakt het gebruik van de Interactieve Resolver op het artikel mogelijk; false schakelt het uit.

Note

Interactive Resolver wordt niet ondersteund door SQL Server Compact Subscribers.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

Deze parameter is verouderd en wordt behouden voor achterwaartse compatibiliteit van scripts.

[ @check_permissions = ] check_permissions

Een bitmap van de tabelniveau-machtigingen die worden geverifieerd wanneer de Merge Agent wijzigingen toepast op de Publisher. Als de Publisher-login/gebruikersaccount die door het samenvoegproces wordt gebruikt niet de juiste tabelrechten heeft, worden de ongeldige wijzigingen als conflicten geregistreerd. @check_permissions is int, en kan de | (Bitwise OK) product van een of meer van de volgende waarden.

Value Description
0x00 (standaard) Rechten worden niet gecontroleerd.
0x10 Controleert de rechten bij de Publisher voordat invoegbewerkingen bij een Subscriber kunnen worden geüpload.
0x20 Controleer de rechten bij de Publisher voordat update-operaties bij een abonnee kunnen worden geüpload.
0x40 Controleert de rechten bij de Publisher voordat verwijderingsoperaties bij een Subscriber kunnen worden geüpload.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Erkent dat de actie die door deze opgeslagen procedure wordt uitgevoerd, een bestaande snapshot ongeldig kan maken. @force_invalidate_snapshot is bit, met een standaardwaarde van 0.

  • 0 specificeert dat het toevoegen van een artikel de snapshot niet ongeldig maakt. Als de opgeslagen procedure detecteert dat de wijziging een nieuwe snapshot vereist, ontstaat er een fout en worden er geen wijzigingen aangebracht.

  • 1 specificeert dat het toevoegen van een artikel de snapshot ongeldig kan maken, en als er bestaande abonnementen zijn die een nieuwe snapshot vereisen, geeft dit toestemming om de bestaande snapshot als verouderd te markeren en een nieuwe snapshot te genereren. @force_invalidate_snapshot wordt ingesteld op 1 wanneer een artikel wordt toegevoegd aan een publicatie met een bestaande snapshot.

[ @published_in_tran_pub = ] N'published_in_tran_pub'

Geeft aan dat een artikel in een samengevoegde publicatie ook wordt gepubliceerd in een transactionele publicatie. @published_in_tran_pub is nvarchar(5), met als standaard .false false Geeft aan dat het artikel ook wordt gepubliceerd in een transactionele publicatie.

[ @force_reinit_subscription = ] force_reinit_subscription

Erkent dat de actie die door deze opgeslagen procedure wordt ondernomen, mogelijk vereist dat bestaande abonnementen opnieuw worden geïntialiseerd. @force_reinit_subscription is bit, met een standaardwaarde van 0.

  • 0 specificeert dat het toevoegen van een artikel niet ervoor zorgt dat het abonnement opnieuw wordt geïntialiseerd. Als de opgeslagen procedure detecteert dat de wijziging vereist dat bestaande abonnementen opnieuw worden geïntialiseerd, treedt er een fout op en worden er geen wijzigingen aangebracht.

  • 1 betekent dat wijzigingen in het Merge-artikel ervoor zorgen dat bestaande abonnementen opnieuw worden geïntialiseerd, en geeft toestemming voor de abonnementsherinitialisatie. @force_reinit_subscription wordt ingesteld op 1 wanneer @subset_filterclause een geparametriseerd rijfilter specificeert.

[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'

Specificeert het niveau van conflictdetectie voor een artikel dat lid is van een logisch record. @logical_record_level_conflict_detection is nvarchar(5), met een standaard van false.

  • false specificeert dat er een conflict wordt gedetecteerd als ergens in het logische record wijzigingen worden aangebracht.

  • false specificeert dat de standaard conflictdetectie wordt gebruikt zoals gespecificeerd door @column_tracking. Zie Groepswijzigingen in gerelateerde rijen met logische records voor meer informatie.

Note

Omdat logische records niet worden ondersteund door SQL Server Compact-abonnees, moet je een waarde van false specificeren voor @logical_record_level_conflict_detection om deze abonnees te ondersteunen.

[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'

Specificeert het niveau van conflictoplossing voor een artikel dat lid is van een logisch record. @logical_record_level_conflict_resolution is nvarchar(5), met een standaard van false.

  • false specificeert dat het gehele winnende logische record het verliezende logische record overschrijft.

  • false specificeert dat winnende rijen niet beperkt zijn tot het logische record.

Als @logical_record_level_conflict_detection is false, dan moet @logical_record_level_conflict_resolution ook worden ingesteld op false. Zie Groepswijzigingen in gerelateerde rijen met logische records voor meer informatie.

Note

Omdat logische records niet worden ondersteund door SQL Server Compact-abonnees, moet je een waarde van false opgeven voor @logical_record_level_conflict_resolution om deze abonnees te ondersteunen.

[ @partition_options = ] partition_options

Definieert de manier waarop gegevens in het artikel worden gepartitioneerd, wat prestatieoptimalisaties mogelijk maakt wanneer alle rijen slechts in één partitie of in slechts één abonnement horen. @partition_options is tinyint en kan een van de volgende waarden zijn.

Value Description
0 (standaard) De filtering voor het artikel is ofwel statisch of levert geen unieke deelverzameling data op voor elke partitie, dat wil zeggen een "overlappende" partitie.
1 De partities overlappen elkaar en data manipulation language (DML)-updates die bij de abonnee worden uitgevoerd, kunnen de partitie waartoe een rij behoort niet wijzigen.
2 De filtering voor het artikel levert niet-overlappende partities op, maar meerdere abonnees kunnen dezelfde partitie ontvangen.
3 De filtering voor het artikel levert niet-overlappende partities op die uniek zijn voor elk abonnement.

Note

Als de brontabel van een artikel al in een andere publicatie is gepubliceerd, dan moet de waarde van @partition_options voor beide artikelen hetzelfde zijn.

[ @processing_order = ] processing_order

Geeft de verwerkingsvolgorde van artikelen in een samengevoegde publicatie aan. @processing_order is int, met als standaard .0 0 specificeert dat het artikel ongeordend is, en elke andere waarde vertegenwoordigt de ordinaalwaarde van de verwerkingsvolgorde voor dit artikel. Artikelen worden verwerkt in volgorde van laagste naar hoogste waarde. Als twee artikelen dezelfde waarde hebben, wordt de verwerkingsvolgorde bepaald door de volgorde van de bijnaam van het artikel in de sysmergearticles-systeemtabel . Voor meer informatie, zie Specificeren Merge Replicatie-eigenschappen.

[ @subscriber_upload_options = ] subscriber_upload_options

Definieert beperkingen op updates die bij een abonnee met een clientabonnement worden uitgevoerd. Zie De prestaties van samenvoeging optimaliseren met Download-Only artikelen voor meer informatie. @subscriber_upload_options is tinyint en kan een van de volgende waarden zijn.

Value Description
0 (standaard) Geen beperkingen. Wijzigingen die zijn aangebracht bij de abonnee, worden geüpload naar de Publisher.
1 Wijzigingen zijn toegestaan bij de abonnee, maar ze worden niet geüpload naar de Publisher.
2 Wijzigingen zijn niet toegestaan bij de abonnee.

Het wijzigen van @subscriber_upload_options vereist dat het abonnement opnieuw wordt geïnitiseerd door sp_reinitmergepullsubscription te bellen.

Note

Als de brontabel van een artikel al in een andere publicatie is gepubliceerd, moet de waarde van @subscriber_upload_options voor beide artikelen gelijk zijn.

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

Specificeert hoe identiteitsbereik beheer wordt behandeld voor het artikel. @identityrangemanagementoption is nvarchar(10) en kan een van de volgende waarden zijn.

Value Description
none Schakelt identiteitsbereik beheer uit.
manual Markeert de identiteitskolom met NOT FOR REPLICATION om handmatige afhandeling van identiteitsbereik mogelijk te maken.
auto Specificeert automatisch beheer van identiteitsbereiken.
NULL (standaard) Standaard is none het wanneer de waarde van @auto_identity_range niet trueis.

Voor achterwaartse compatibiliteit, wanneer de waarde van @identityrangemanagementoption is NULL, wordt de waarde van @auto_identity_range gecontroleerd. Wanneer de waarde van @identityrangemanagementoption echter niet NULLis, wordt de waarde van @auto_identity_range genegeerd. Zie Identiteitskolommen repliceren voor meer informatie.

[ @delete_tracking = ] N'delete_tracking'

Geeft aan of verwijderingen worden gerepliceerd. @delete_tracking is nvarchar(5), met een standaard van true. false geeft aan dat verwijderingen niet worden gerepliceerd, en true geeft aan dat verwijderingen worden gerepliceerd, wat het gebruikelijke gedrag is bij merge-replicatie. Wanneer @delete_tracking is ingesteld op false, moeten rijen die bij de abonnee zijn verwijderd handmatig worden verwijderd op de Publisher, en rijen verwijderd op de Publisher handmatig bij de abonnee.

Important

Het instellen van @delete_trackingfalse op resulteert in niet-convergentie. Als de brontabel van een artikel al in een andere publicatie is gepubliceerd, dan moet de waarde van @delete_tracking voor beide artikelen hetzelfde zijn.

Note

@delete_tracking opties kunnen niet worden ingesteld met de New Publication Wizard of het dialoogvenster Publicatie-eigenschappen .

[ @compensate_for_errors = ] N'compensate_for_errors'

Geeft aan of compenserende acties worden uitgevoerd wanneer er fouten optreden tijdens synchronisatie. @compensate_for_errors is nvarchar(5), met als standaard .false Wanneer ingesteld op true, leiden wijzigingen die niet kunnen worden toegepast op een abonnee of Publisher tijdens synchronisatie altijd tot compenserende acties om de wijziging ongedaan te maken; echter, een verkeerd geconfigureerde Subscriber die een fout genereert, kan ertoe leiden dat wijzigingen bij andere Subscribers en Publishers ongedaan worden gemaakt. false schakelt deze compensatieacties uit, maar de fouten blijven geregistreerd zoals bij de compensatie en latere fusies blijven proberen de wijzigingen toe te passen totdat het lukt.

Important

Hoewel data in de getroffen rijen misschien niet convergent lijkt, kunnen er zodra je fouten aanpakt veranderingen worden toegepast en zullen de data convergeren. Als de brontabel van een artikel al in een andere publicatie is gepubliceerd, dan moet de waarde van @compensate_for_errors voor beide artikelen hetzelfde zijn.

[ @stream_blob_columns = ] N'stream_blob_columns'

Specificeert dat een datastroomoptimalisatie wordt gebruikt bij het repliceren van binaire kolommen van grote objecten. @stream_blob_columns is nvarchar(5), met een standaard van false. true betekent dat de optimalisatie geprobeerd zal worden. @stream_blob_columns staat op true wanneer FILESTREAM is ingeschakeld. Dit maakt het mogelijk om replicatie van FILESTREAM-gegevens optimaal te laten functioneren en het geheugengebruik te verminderen. Om FILESTREAM-tabelartikelen te dwingen geen blobstreaming te gebruiken, zet sp_changemergearticleje @stream_blob_columns op false.

Important

Het inschakelen van deze geheugenoptimalisatie kan de prestaties van de Merge Agent tijdens synchronisatie verminderen. Deze optie moet alleen worden gebruikt bij het repliceren van kolommen die megabytes aan data bevatten.

Note

Bepaalde merge-replicatiefunctionaliteiten, zoals logische records, kunnen nog steeds voorkomen dat streamoptimalisatie wordt gebruikt bij het repliceren van binaire grote objecten, zelfs met @stream_blob_columns ingesteld op true.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_addmergearticle wordt gebruikt bij merge-replicatie.

Wanneer je objecten publiceert, worden hun definities gekopieerd naar Abonnees. Als je een databaseobject publiceert dat afhankelijk is van een of meer andere objecten, moet je alle gerefereerde objecten publiceren. Als je bijvoorbeeld een view publiceert die afhankelijk is van een tabel, moet je die tabel ook publiceren.

Als je een waarde van 3 voor @partition_options specificeert:

  • Er kan slechts één abonnement zijn voor elke partitie van de gegevens in dat artikel. Als een tweede abonnement wordt aangemaakt waarbij het filtercriterium van het nieuwe abonnement wordt opgelost op dezelfde partitie als het bestaande abonnement, wordt het bestaande abonnement verwijderd.

  • Metadata wordt opgeschoond telkens wanneer de Merge Agent draait en de gepartitioneerde snapshot verloopt sneller. Bij het gebruik van deze optie moet je overwegen door de abonnee gevraagde gepartitioneerde snapshot in te schakelen. Voor meer informatie, zie Create a Snapshot for a Merge Publication with Parameterized Filters.

Als je een artikel met een statisch horizontaal filter, met @subset_filterclause, toevoegt aan een bestaande publicatie met artikelen die geparametriseerde filters hebben, moeten abonnementen opnieuw worden geïntialiseerd.

Wanneer je @processing_order specificeert, raden we aan om gaten te laten tussen de waarden van de artikelvolgorde, wat het makkelijker maakt om in de toekomst nieuwe waarden in te stellen. Als je bijvoorbeeld drie artikelen hebt, Article1, Article2, en Article3, zet @processing_order dan op 10, 20, en 30, in plaats van 1, 2, en 3. Voor meer informatie, zie Specificeren Merge Replicatie-eigenschappen.

Standaard schema-optietabel

Deze tabel beschrijft de standaardwaarde die de opgeslagen procedure instelt, als er een NULL waarde is gespecificeerd voor @schema_option, wat afhangt van het artikeltype.

Artikeltype Schema-optiewaarde
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1- SQL Server 2005 (9.x) en latere compatibele publicaties met een native mode snapshot.

0x08034FF1- SQL Server 2005 (9.x) en latere compatibele publicaties met een tekenmodus-snapshot.
view schema only 0x01

Note

Als de publicatie eerdere versies van SQL Server ondersteunt, is 0x30034FF1de standaard schema-optie voor table .

Tabel voor geldige schema-optie

De volgende tabel beschrijft de toegestane waarden @schema_option afhankelijk van het artikeltype.

Artikeltype Schema-optiewaarden
func schema only 0x01 en 0x2000
indexed view schema only 0x01, , 0x0400x0100, 0x2000, , , 0x40000, , en 0x10000000x200000
proc schema only 0x01 en 0x2000
table Alle opties.
view schema only 0x01, , 0x0400x0100, 0x2000, , , 0x40000, , en 0x10000000x200000

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

Vereist lidmaatschap van de sysadmin vaste serverfunctie of de db_owner vaste databaserol.