Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Verandert de eigenschappen van een samengevoegd artikel. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.
Transact-SQL syntaxis-conventies
Syntax
sys.sp_changemergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Arguments
[ @publication = ] N'publicatie'
De naam van de publicatie waarin het artikel staat. @publication is sysname, zonder standaard.
[ @article = ] N'artikel'
De naam van het artikel moet worden veranderd. @article is sysname, zonder standaard.
[ @property = ] N'eigenschap'
De eigenschap moet worden aangepast voor het betreffende artikel en de publicatie. @property is een systeemnaam en kan een van de waarden zijn die in de volgende tabel staan.
[ @value = ] N'waarde'
De nieuwe waarde voor de gespecificeerde eigenschap. @value is nvarchar(2000) en kan een van de waarden zijn die in de volgende tabel worden vermeld.
Deze tabel beschrijft de eigenschappen van artikelen en de waarden voor die eigenschappen.
| Property | Values | Description |
|---|---|---|
allow_interactive_resolver |
true |
Maakt het gebruik van een interactieve resolver voor het artikel mogelijk. |
false |
Schakelt het gebruik van een interactieve resolver voor het artikel uit. | |
article_resolver |
Aangepaste resolver voor het artikel. Gilt alleen voor een tabelartikel. | |
check_permissions (bitmap) |
0x00 |
Tabelniveau-machtigingen worden niet gecontroleerd. |
0x10 |
Tabelniveau-rechten worden gecontroleerd bij de Publisher voordat INSERT verklaringen bij de Subscriber worden toegepast bij de Publisher. | |
0x20 |
Tabelniveau-rechten worden gecontroleerd bij de Publisher voordat UPDATE verklaringen bij de Subscriber worden toegepast bij de Publisher. | |
0x40 |
Tabelniveau-rechten worden gecontroleerd bij de Publisher voordat DELETE verklaringen bij de Subscriber worden toegepast bij de Publisher. | |
column_tracking |
true |
Schakelt kolomniveau-tracking in. Gilt alleen voor een tabelartikel. Opmerking: Kolomniveau-tracking kan niet worden gebruikt bij het publiceren van tabellen met meer dan 246 kolommen. |
false |
Schakelt kolomniveautracking uit en laat conflictdetectie op rijniveau staan. Gilt alleen voor een tabelartikel. | |
compensate_for_errors |
true |
Compenserende acties worden uitgevoerd wanneer er fouten optreden tijdens de synchronisatie. Voor meer informatie, zie sp_addmergearticle. |
false |
Compenserende acties worden niet uitgevoerd, wat het standaardgedrag is. Voor meer informatie, zie sp_addmergearticle. Belangrijk: Hoewel data in de getroffen rijen misschien niet convergent lijkt, kunnen er zodra je fouten aanpakt wijzigingen worden toegepast en convergeert de data. 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. |
|
creation_script |
Pad en naam van een optioneel artikelschema-script dat wordt gebruikt om het artikel te maken in de abonnementsdatabase. | |
delete_tracking |
true |
DELETE statements worden gerepliceerd, wat het standaardgedrag is. |
false |
DELETE Uitspraken worden niet gerepliceerd. Belangrijk: Instellen delete_tracking op false resulteert in non-convergentie, en verwijderde rijen moeten handmatig worden verwijderd. |
|
description |
Beschrijvende vermelding van het artikel. | |
destination_owner |
Naam van de eigenaar van het object in de abonnementsdatabase, als het niet de dbo is. | |
identity_range |
bigint die de bereikgrootte specificeert die gebruikt moet worden bij het toewijzen van nieuwe identiteitswaarden als het artikel op heeft identityrangemanagementoption gezet auto of auto_identity_range op trueheeft gezet. Geldt alleen voor een tabelartikel. Voor meer informatie, zie de sectie "Merge Replication" van Replicate Identity Columns. |
|
identityrangemanagementoption |
manual |
Schakelt automatisch identiteitsbereik beheer uit. Markeert identiteitskolommen met NOT FOR REPLICATION om handmatige afhandeling van identiteitsbereik mogelijk te maken. Zie Identiteitskolommen repliceren voor meer informatie. |
none |
Schakelt alle identiteitsbereik uit. | |
logical_record_level_conflict_detection |
true |
Er wordt een conflict gedetecteerd als er ergens in het logische record wijzigingen worden aangebracht. Vereist dat deze logical_record_level_conflict_resolution is ingesteld op true. |
false |
Standaard conflictdetectie wordt gebruikt zoals gespecificeerd door column_tracking. |
|
logical_record_level_conflict_resolution |
true |
Het volledige winnende logische record overschrijft het verliezende logische record. |
false |
Winnende rijen zijn niet beperkt tot het logische record. | |
partition_options |
0 |
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 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. Opmerking: Als je een waarde van 3 voor partition_optionsspecificeert, kan er slechts één abonnement zijn voor elke datapartitie 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. |
|
pre_creation_command |
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 |
Ze laat de tafel vallen voordat hij hem opnieuw aanmaakt. | |
truncate |
Slaat de bestemmingstabel af. | |
processing_order |
Int die de verwerkingsvolgorde van artikelen in een samengevoegde publicatie aangeeft. | |
pub_identity_range |
bigint die de bereikgrootte specificeert die aan een abonnee met een serverabonnement is toegewezen als het artikel is identityrangemanagementoption ingesteld op auto of auto_identity_range op true. Deze identiteitsreeks is gereserveerd voor een heruitgevende abonnee, die aan zijn eigen abonnees kan worden toegewezen. Geldt alleen voor een tabelartikel. Voor meer informatie, zie de sectie "Merge Replication" van Replicate Identity Columns. |
|
published_in_tran_pub |
true |
Het artikel wordt ook gepubliceerd in een transactionele publicatie. |
false |
Het artikel wordt niet ook gepubliceerd in een transactionele publicatie. | |
resolver_info |
Wordt gebruikt om aanvullende informatie te specificeren die vereist is voor een aangepaste resolver. Sommige Microsoft Resolvers vereisen een kolom die als invoer voor de resolver wordt geleverd.
resolver_infois nvarchar(255), met als standaard .NULL Voor meer informatie, zie Advanced Merge Replication Conflict - COM-Based Resolvers. |
|
schema_option (bitmap) |
Zie de sectie Opmerkingen voor meer informatie. | |
0x00 |
Schakelt scripting uit door de Snapshot Agent en gebruikt het script dat in creation_scriptwordt geleverd. |
|
0x01 |
Genereert het object creation script (CREATE TABLE, CREATE PROCEDURE, enzovoort). | |
0x10 |
Genereert een overeenkomstige geclusterde index. | |
0x20 |
Zet door gebruikers gedefinieerde datatypes om naar basisdatatypes bij de abonnee. Deze optie kan niet worden gebruikt wanneer er een CHECK of DEFAULT beperking is op een door de gebruiker gedefinieerde type (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. | |
0x80 |
Bevat gedeclareerde referentieintegriteit op de primaire sleutels. | |
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-constraints. | |
0x800 |
Repliceert standaardinstellingen. | |
0x1000 |
Repliceert kolomniveau-collatie. | |
0x2000 |
Repliceert uitgebreide eigenschappen die horen bij het bronobject van het gepubliceerde artikel. | |
0x4000 |
Repliceert unieke sleutels als gedefinieerd op een tabelartikel. | |
0x8000 |
Genereert ALTER TABLE statements bij het scripten van constraints. | |
0x10000 |
Repliceert CHECK-constraints als NIET VOOR REPLICATIE zodat de constraints niet worden afgedwongen tijdens synchronisatie. | |
0x20000 |
Repliceert FOREIGN KEY-beperkingen als NIET VOOR REPLICATIE zodat de 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 |
Repliceert de volledige tekstindex | |
0x2000000 |
XML-schemacollecties die aan xml-kolommen zijn gebonden, worden niet gerepliceerd. | |
0x4000000 |
Repliceert indexen op xml-kolommen . | |
0x8000000 |
Maak schema's 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 |
Repliceer permissies. | |
0x80000000 |
Probeer 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, datetimeoffset en datetime2) die in SQL Server 2008 (10.0.x) zijn geïntroduceerd om naar datatypes 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. | |
NULL |
Het systeem genereert automatisch een geldige schema-optie voor het artikel. | |
status |
active |
Het initiële verwerkingsscript om de tabel te publiceren wordt uitgevoerd. |
unsynced |
Het initiële verwerkingsscript om de tabel te publiceren wordt uitgevoerd de volgende keer dat de Snapshot Agent draait. | |
stream_blob_columns |
true |
Een datastroomoptimalisatie wordt gebruikt bij het repliceren van binaire kolommen van grote objecten. Echter, bepaalde merge-replicatiefunctionaliteiten, zoals logische records, kunnen nog steeds voorkomen dat de stroomoptimalisatie wordt gebruikt.
stream_blob_columns is ingesteld 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 blob streaming te gebruiken, zet stream_blob_columns je op false.Belangrijk: Het inschakelen van deze geheugenoptimalisatie kan de prestaties van de Merge Agent tijdens synchronisatie schaden. Deze optie moet alleen worden gebruikt bij het repliceren van kolommen die megabytes aan data bevatten. |
false |
De optimalisatie wordt niet gebruikt bij het repliceren van binaire kolommen van grote objecten. | |
subscriber_upload_options |
0 |
Geen beperkingen op updates die bij een abonnee met een clientabonnement worden uitgevoerd; wijzigingen worden geüpload naar de Publisher. Het wijzigen van deze eigenschap kan vereisen dat bestaande abonnees opnieuw worden geïntialiseerd. |
1 |
Wijzigingen zijn toegestaan bij een abonnee met een clientabonnement, maar ze worden niet geüpload naar de Publisher. | |
2 |
Wijzigingen zijn niet toegestaan bij een abonnee met een clientabonnement. | |
subset_filterclause |
WHERE-clausule die de horizontale filtering specificeert. Gilt alleen voor een tabelartikel. Belangrijk: 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. |
|
threshold |
Percentagewaarde gebruikt voor abonnees die SQL Server Compact of eerdere versies van SQL Server draaien.
thresholdcontroleert wanneer de Merge Agent een nieuw identiteitsbereik toewijst. Wanneer het percentage waarden dat in de drempel is gespecificeerd wordt gebruikt, maakt de Merge Agent een nieuw identiteitsbereik aan. Gebruikt wanneer identityrangemanagementoption is ingesteld op auto of auto_identity_range is ingesteld op true. Geldt alleen voor een tabelartikel. Voor meer informatie, zie de sectie "Merge Replication" van Replicate Identity Columns. |
|
verify_resolver_signature |
1 |
De digitale handtekening op een aangepaste resolver wordt gecontroleerd om te bepalen of deze van een betrouwbare bron komt. |
0 |
Digitale handtekening op een aangepaste resolver wordt niet geverifieerd om te bepalen of het van een betrouwbare bron komt. | |
NULL (standaard) |
Geeft de lijst met ondersteunde waarden voor @property terug. |
[ @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.
0specificeert dat wijzigingen in het merge-artikel de snapshot niet ongeldig maken. Als de opgeslagen procedure detecteert dat de wijziging een nieuwe snapshot vereist, ontstaat er een fout en worden er geen wijzigingen aangebracht.1betekent dat wijzigingen in het merge-artikel ervoor kunnen zorgen dat de snapshot ongeldig wordt, en als er bestaande abonnementen zijn die een nieuwe snapshot vereisen, geeft het toestemming om de bestaande snapshot als verouderd te markeren en een nieuwe snapshot te genereren.
Zie de sectie Opmerkingen voor de eigenschappen die, wanneer gewijzigd, de aanmaak van een nieuwe snapshot vereisen.
[ @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.
0specificeert dat wijzigingen in het merge-artikel niet leiden tot het opnieuw initialiseren van het abonnement. 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.1betekent dat wijzigingen in het Merge-artikel ervoor zorgen dat bestaande abonnementen opnieuw worden geïntialiseerd, en geeft toestemming voor de abonnementsherinitialisatie.
Zie de sectie Opmerkingen voor de eigenschappen die, wanneer gewijzigd, vereisen dat alle bestaande abonnementen opnieuw worden geïntinitiseerd.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Remarks
sp_changemergearticle wordt gebruikt bij merge-replicatie.
Omdat sp_changemergearticle wordt gebruikt om artikeleigenschappen te wijzigen die oorspronkelijk zijn gespecificeerd met sp_addmergearticle, zie sp_addmergearticle voor meer informatie over deze eigenschappen.
Het wijzigen van de volgende eigenschappen vereist dat er een nieuwe snapshot wordt gegenereerd, en je moet een waarde van 1 specificeren voor de @force_invalidate_snapshot parameter:
check_permissionscolumn_trackingdestination_ownerpre_creation_commandschema_optionssubset_filterclause
Het wijzigen van de volgende eigenschappen vereist dat bestaande abonnementen opnieuw worden geïntialiseerd, en je moet een waarde van 1 specificeren voor de @force_reinit_subscription-parameter :
check_permissionscolumn_trackingdestination_ownerpre_creation_commandidentityrangemanagementoptionsubscriber_upload_optionssubset_filterclausecreation_scriptschema_optionlogical_record_level_conflict_detectionlogical_record_level_conflict_resolution
Wanneer je een waarde van 3 voor partition_optionsspecificeert, wordt metadata opgeschoond telkens wanneer de Merge Agent draait en verloopt de gepartitioneerde snapshot 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.
Bij het instellen van de column_tracking eigenschap, als de tabel al is gepubliceerd in andere samenvoegpublicaties, moet de kolomregistratie gelijk zijn aan de waarde die door bestaande artikelen op basis van deze tabel wordt gebruikt. Deze parameter is alleen specifiek voor tabelartikelen.
Als meerdere publicaties artikelen publiceren die gebaseerd zijn op dezelfde onderliggende tabel, zorgt het wijzigen van de delete_tracking eigenschap of de compensate_for_errors eigenschap voor één artikel ervoor dat dezelfde wijziging wordt aangebracht bij de andere artikelen die op dezelfde tabel zijn gebaseerd.
Als de Publisher-login/gebruikersaccount die door het samenvoegproces wordt gebruikt niet de juiste tabelrechten heeft, worden de ongeldige wijzigingen als conflicten geregistreerd.
Wanneer je de waarde van schema_optionverandert, voert het systeem geen bitgewijze update uit. Dit betekent dat wanneer je stelt schema_option met sp_changemergearticle, bestaande bitinstellingen mogelijk uitgeschakeld zijn. Om de bestaande instellingen te behouden, moet je & (Bitwise EN) uitvoeren tussen de waarde die je instelt en de huidige waarde van schema_option, wat bepaald kan worden door sp_helpmergearticle uit te voeren.
Caution
Als je veel (misschien honderden) artikelen in een publicatie hebt en je uitvoert sp_changemergearticle voor een van de artikelen, kan het lang duren om het af te ronden.
Tabel voor geldige schema-optie
De volgende tabel beschrijft de toegestane schema_option waarden, afhankelijk van het type artikel.
| 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 @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Permissions
Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_changemergearticle.