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
Ändrar egenskaperna hos en sammanslagningsartikel. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.
Transact-SQL syntaxkonventioner
Syntax
sys.sp_changemergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Arguments
[ @publication = ] N'publicering'
Namnet på publikationen där artikeln finns. @publication är sysname, utan standard.
[ @article = ] Inte en artikel'
Namnet på artikeln ska ändras. @article är sysname, utan standard.
[ @property = ] N'property'
Egenskapen att ändra sig för den aktuella artikeln och publikationen. @property är sysname och kan vara ett av värdena som listas i följande tabell.
[ @value = ] N'value'
Det nya värdet för den angivna egenskapen. @value är nvarchar(2000) och kan vara ett av värdena som listas i följande tabell.
Denna tabell beskriver artiklarna egenskaperna och värdena för dessa egenskaper.
| Property | Värden | Description |
|---|---|---|
allow_interactive_resolver |
true |
Möjliggör användning av en interaktiv resolver för artikeln. |
false |
Inaktiverar användningen av en interaktiv resolver för artikeln. | |
article_resolver |
Anpassad resolver för artikeln. Gäller endast en tabellartikel. | |
check_permissions (bitmap) |
0x00 |
Behörigheter på tabellnivå kontrolleras inte. |
0x10 |
Behörigheter på tabellnivå kontrolleras hos Publisher innan INSERT uttalanden från Subscriber tillämpas hos Publisher. | |
0x20 |
Behörigheter på tabellnivå kontrolleras hos Publisher innan UPDATE uttalanden från Subscriber tillämpas hos Publisher. | |
0x40 |
Behörigheter på tabellnivå kontrolleras hos Publisher innan DELETE uttalanden hos Subscriber tillämpas hos Publisher. | |
column_tracking |
true |
Slår på spårning av kolumnnivå. Gäller endast en tabellartikel. Notera: Kolumnnivåspårning kan inte användas när man publicerar tabeller med fler än 246 kolumner. |
false |
Stänger av kolumnnivåspårning och lämnar konfliktupptäckten på radnivå. Gäller endast en tabellartikel. | |
compensate_for_errors |
true |
Kompenserande åtgärder utförs när fel uppstår under synkroniseringen. För mer information, se sp_addmergearticle. |
false |
Kompensationsåtgärder utförs inte, vilket är standardbeteendet. För mer information, se sp_addmergearticle. Viktigt: Även om data i de berörda raderna kan verka vara utanför konvergens, kan ändringar göras så fort du åtgärdar eventuella fel, och data konvergerar. Om källtabellen för en artikel redan är publicerad i en annan publikation, måste värdet av compensate_for_errors vara detsamma för båda artiklarna. |
|
creation_script |
Sökväg och namn på ett valfritt artikelschemaskript som används för att skapa artikeln i prenumerationsdatabasen. | |
delete_tracking |
true |
DELETE Satser replikeras, vilket är standardbeteendet. |
false |
DELETE Uttalanden replikeras inte. Viktigt: Att ställa in delete_tracking till false resulterar i icke-konvergens, och raderade rader måste tas bort manuellt. |
|
description |
Beskrivande inlägg för artikeln. | |
destination_owner |
Namnet på ägaren av objektet i prenumerationsdatabasen, om inte dbo. | |
identity_range |
bigint som specificerar intervallstorleken som ska användas vid tilldelning av nya identitetsvärden om artikeln har identityrangemanagementoption satt till auto eller auto_identity_range satt till true. Gäller endast en tabellartikel. För mer information, se avsnittet "Merge Replication" i Replicate Identity Columns. |
|
identityrangemanagementoption |
manual |
Inaktiverar automatisk hantering av identitetsräckvidd. Markerar identitetskolumner med NOT FOR REPLICATION för att möjliggöra manuell hantering av identitetsintervall. Mer information finns i Replikera identitetskolumner. |
none |
Inaktiverar all identitetsområdeshantering. | |
logical_record_level_conflict_detection |
true |
En konflikt upptäcks om ändringar görs någonstans i den logiska posten. Kräver som logical_record_level_conflict_resolution är inställt på true. |
false |
Standardkonfliktdetektering används enligt specificeringen av column_tracking. |
|
logical_record_level_conflict_resolution |
true |
Hela vinstens logiska rekord skriver över det förlorande logiska rekordet. |
false |
Vinnande rader är inte begränsade till den logiska dokumentationen. | |
partition_options |
0 |
Filtreringen för artikeln är antingen statisk eller ger inte en unik delmängd av data för varje partition, det vill säga en "överlappande" partition. |
1 |
Partitionerna överlappar, och DML-uppdateringar som görs hos prenumeranten kan inte ändra partitionen som en rad tillhör. | |
2 |
Filtreringen för artikeln ger icke-överlappande partitioner, men flera prenumeranter kan få samma partition. | |
3 |
Filtreringen för artikeln ger icke-överlappande partitioner som är unika för varje prenumeration. Notera: Om du anger ett värde för 3 för partition_options, kan det bara finnas en prenumeration för varje partition av data i den artikeln. Om en andra prenumeration skapas, där filtreringskriteriet för den nya prenumerationen gäller samma partition som den befintliga, tas den befintliga prenumerationen bort. |
|
pre_creation_command |
none |
Om tabellen redan finns hos Abonnenten vidtas ingen åtgärd. |
delete |
Utfärdar en borttagning baserat på WHERE-klausulen i delmängdsfiltret. | |
drop |
Tappar bordet innan han skapar det igen. | |
truncate |
Förkortar destinationstabellen. | |
processing_order |
INT som anger bearbetningsordningen för artiklar i en sammanslagningspublikation. | |
pub_identity_range |
bigint som specificerar intervallstorleken som tilldelats en prenumerant med serverprenumeration om artikeln har identityrangemanagementoption satt till auto eller auto_identity_range satt till true. Detta identitetsintervall är reserverat för en återpublicerad prenumerant att tilldela sina egna prenumeranter. Gäller endast en tabellartikel. För mer information, se avsnittet "Merge Replication" i Replicate Identity Columns. |
|
published_in_tran_pub |
true |
Artikeln publiceras också i en transaktionell publikation. |
false |
Artikeln publiceras inte heller i en transaktionspublikation. | |
resolver_info |
Används för att specificera ytterligare information som krävs av en anpassad resolver. Vissa av Microsoft Resolvers kräver en kolumn som tillhandahålls som indata till resolvern.
resolver_info är nvarchar(255), med en standard på NULL. För mer information, se Advanced Merge Replication Conflict - COM-Based Resolvers. |
|
schema_option (bitmap) |
Mer information finns i avsnittet Kommentarer. | |
0x00 |
Inaktiverar skriptning av Snapshot Agent och använder skriptet som tillhandahålls i creation_script. |
|
0x01 |
Genererar objektskapandeskriptet (CREATE TABLE, CREATE PROCEDURE, och så vidare). | |
0x10 |
Genererar ett motsvarande klustrat index. | |
0x20 |
Konverterar användardefinierade datatyper till basdatatyper hos prenumeranten. Detta alternativ kan inte användas när det finns en CHECK eller DEFAULT begränsning på en användardefinierad typ (UDT) kolumn, om en UDT-kolumn är en del av primärnyckeln, eller om en beräknad kolumn refererar till en UDT-kolumn. | |
0x40 |
Genererar motsvarande icke-klustrade index. | |
0x80 |
Inkluderar deklarerad referensiell integritet på primärnycklarna. | |
0x100 |
Replikerar användartriggers i en tabellartikel, om definierad. | |
0x200 |
Replikerar FRÄMMANDE NYCKEL-begränsningar. Om den refererade tabellen inte är en del av en publikation, replikeras inte alla FOREIGN KEY-begränsningar på en publicerad tabell. | |
0x400 |
Replikerar CHECK-begränsningar. | |
0x800 |
Replikerar standardinställningar. | |
0x1000 |
Replikerar kolumnnivå-sortering. | |
0x2000 |
Replikerar utökade egenskaper kopplade till källobjektet för publicerad artikel. | |
0x4000 |
Replikerar unika nycklar om de definieras i en tabellartikel. | |
0x8000 |
Genererar ALTER TABLE satser när man skriptar begränsningar. | |
0x10000 |
Replikerar CHECK-begränsningar som INTE FÖR REPLIKERING så att begränsningarna inte upprätthålls under synkroniseringen. | |
0x20000 |
Replikerar FRÄMMANDE NYCKEL-begränsningar som INTE FÖR REPLIKERING så att begränsningarna inte upprätthålls under synkroniseringen. | |
0x40000 |
Replikerar filgrupper kopplade till en partitionerad tabell eller index. | |
0x80000 |
Replikerar partitionsschemat för en partitionerad tabell. | |
0x100000 |
Replikerar partitionsschemat för ett partitionerat index. | |
0x200000 |
Replikerar tabellstatistik. | |
0x400000 |
Replikerar standardbindningar | |
0x800000 |
Replikerar regelbindningar | |
0x1000000 |
Replikerar fulltextindexet | |
0x2000000 |
XML-schemasamlingar bundna till xml-kolumner replikeras inte. | |
0x4000000 |
Replikerar index på xml-kolumner . | |
0x8000000 |
Skapa alla scheman som inte redan finns hos abonnenten. | |
0x10000000 |
Konverterar xml-kolumner till ntext på prenumeranten. | |
0x20000000 |
Konverterar stora objektdatatyper (nvarchar(max),varchar(max) och varbinary(max)) som introducerades i SQL Server 2005 (9.x) till datatyper som stöds på SQL Server 2000 (8.x). | |
0x40000000 |
Replikera behörigheter. | |
0x80000000 |
Försök att ta bort beroenden till objekt som inte ingår i publikationen. | |
0x100000000 |
Använd detta alternativ för att replikera attributet FILESTREAM, om det är angivet i varbinary(max) -kolumner. Specificera inte detta alternativ om du replikerar tabeller till SQL Server 2005 (9.x) prenumeranter. Att replikera tabeller som har FILESTREAM-kolumner till SQL Server 2000 (8.x) Subscribers stöds inte, oavsett hur detta schema-alternativ är inställt. Se relaterat alternativ 0x800000000. |
|
0x200000000 |
Konverterar datum- och tiddatatyper (datum, tid, datumtidavvikning och datumtid2) som introducerades i SQL Server 2008 (10.0.x) till datatyper som stöds på tidigare versioner av SQL Server. | |
0x400000000 |
Replikerar komprimeringsalternativet för data och index. Mer information finns i Datakomprimering. | |
0x800000000 |
Ställ in detta alternativ för att lagra FILESTREAM-data i en egen filgrupp hos Prenumeranten. Om detta alternativ inte är inställt lagras FILESTREAM-data i standardfilgruppen. Replikering skapar inte filgrupper; därför, om du sätter detta alternativ måste du skapa filgruppen innan du applicerar snapshoten på Prenumeranten. För mer information om hur du skapar objekt innan du applicerar snapshoten, se Execute Scripts Before and After the Snapshot Is Apply. Se relaterat alternativ 0x100000000. |
|
0x1000000000 |
Konverterar användardefinierade typer (UDT) för common language runtime (CLR) till varbinär(max) så att kolumner av typen UDT kan replikeras till prenumeranter som kör SQL Server 2005 (9.x). | |
0x2000000000 |
Konverterar hierarkiid-datatypen till varbinary(max) så att kolumner av typen hierarchyid kan replikeras till prenumeranter som kör SQL Server 2005 (9.x). För mer information om hur man använder hierarchyid-kolumner i replikerade tabeller, se hierarchyid data type method reference (referens). | |
0x4000000000 |
Replikerar alla filtrerade index i tabellen. Mer information om filtrerade index finns i Skapa filtrerade index. | |
0x8000000000 |
Konverterar geografi- och geometridatatyperna till varbinär(max) så att kolumner av dessa typer kan replikeras till prenumeranter som kör SQL Server 2005 (9.x). | |
0x10000000000 |
Replikerar index på kolumner för typ , geografi och geometri. | |
NULL |
Systemet genererar automatiskt ett giltigt schema-alternativ för artikeln. | |
status |
active |
Det initiala bearbetningsskriptet för att publicera tabellen körs. |
unsynced |
Det initiala bearbetningsskriptet för att publicera tabellen körs nästa gång Snapshot Agent körs. | |
stream_blob_columns |
true |
En dataströmsoptimering används vid replikering av binära stora objektkolumner. Dock kan vissa funktioner för sammanslagningsreplikering, såsom logiska poster, fortfarande förhindra att strömoptimering används.
stream_blob_columns är satt till true när FILESTREAM är aktiverad. Detta möjliggör att replikering av FILESTREAM-data fungerar optimalt och minskar minnesanvändningen. För att tvinga FILESTREAM-tabellartiklar att inte använda blob-strömning, sätt stream_blob_columns till false.Viktigt: Att aktivera denna minnesoptimering kan skada prestandan hos Merge Agent under synkronisering. Detta alternativ bör endast användas vid replikering av kolumner som innehåller megabyte data. |
false |
Optimeringen används inte vid replikering av binära stora objektkolumner. | |
subscriber_upload_options |
0 |
Inga begränsningar för uppdateringar gjorda hos en prenumerant med klientprenumeration; ändringar laddas upp till Publisher. Att ändra denna egenskap kan kräva att befintliga prenumeranter ominitieras. |
1 |
Ändringar är tillåtna hos en prenumerant med klientprenumeration, men de laddas inte upp till Publisher. | |
2 |
Ändringar är inte tillåtna hos en prenumerant med klientprenumeration. | |
subset_filterclause |
WHERE-klausulen specificerar horisontell filtrering. Gäller endast en tabellartikel. Viktigt: Av prestandaskäl rekommenderade vi att du inte tillämpar funktioner på kolumnnamn i parameteriserade radfilterklausuler, såsom LEFT([MyColumn]) = SUSER_SNAME(). Om du använder HOST_NAME i en filterklausul och åsidosätter värdet HOST_NAME kan du behöva konvertera datatyper med hjälp av CONVERT. För mer information om bästa praxis i detta fall, se avsnittet "Att överskriva HOST_NAME()-värdet" i Parameterized Filters - Parameterized Row Filters. |
|
threshold |
Procentantalat värde som används för prenumeranter som kör SQL Server Compact eller tidigare versioner av SQL Server.
thresholdstyr när Merge Agent tilldelar ett nytt identitetsintervall. När procentandelen värden som anges i tröskelvärdet används, skapar Merge Agent ett nytt identitetsintervall. Används när identityrangemanagementoption är satt till auto eller auto_identity_range är satt till true. Gäller endast en tabellartikel. För mer information, se avsnittet "Merge Replication" i Replicate Identity Columns. |
|
verify_resolver_signature |
1 |
Digital signatur på en anpassad resolver verifieras för att avgöra om den kommer från en betrodd källa. |
0 |
Digital signatur på en anpassad resolver verifieras inte för att avgöra om den kommer från en betrodd källa. | |
NULL (standardinställning) |
Returnerar listan över stödda värden för @property. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Erkänner att åtgärden som utförs av denna lagrade procedur kan ogiltigförklara en befintlig snapshot.
@force_invalidate_snapshot är bit, med standardvärdet 0.
0specificerar att ändringar i sammanslagningsartikeln inte gör att snapshoten blir ogiltig. Om den lagrade proceduren upptäcker att ändringen kräver en ny snapshot, uppstår ett fel och inga ändringar görs.1innebär att ändringar i sammanslagningsartikeln kan göra att snapshoten blir ogiltig, och om det finns befintliga prenumerationer som kräver en ny snapshot, ger det tillstånd att markera den befintliga snapshoten som föråldrad och generera en ny snapshot.
Se avsnittet Kommentarer för de egenskaper som, när de ändras, kräver generering av en ny ögonblicksbild.
[ @force_reinit_subscription = ] force_reinit_subscription
Erkänner att åtgärden som utförs av denna lagrade procedur kan kräva att befintliga prenumerationer initialiseras om.
@force_reinit_subscription är lite, med standardvärdet 0.
0specificerar att ändringar i sammanslagningsartikeln inte gör att prenumerationen återinitieras. Om den lagrade proceduren upptäcker att ändringen skulle kräva att befintliga prenumerationer initieras om, uppstår ett fel och inga ändringar görs.1innebär att ändringar i sammanslagningsartikeln gör att befintliga prenumerationer ominitieras, och ger behörighet för prenumerationsominitiering.
Se avsnittet Kommentarer för de egenskaper som, när de ändras, kräver att alla befintliga prenumerationer initieras om.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Remarks
sp_changemergearticle används vid sammanslagningsreplikation.
Eftersom sp_changemergearticle används för att ändra artikelegenskaper som ursprungligen specificerades med sp_addmergearticle, se sp_addmergearticle för mer information om dessa egenskaper.
Att ändra följande egenskaper kräver att en ny snapshot genereras, och du måste ange ett värde på 1 för @force_invalidate_snapshot-parametern:
check_permissionscolumn_trackingdestination_ownerpre_creation_commandschema_optionssubset_filterclause
Att ändra följande egenskaper kräver att befintliga prenumerationer initieras om, och du måste ange ett värde på 1 för @force_reinit_subscription-parametern :
check_permissionscolumn_trackingdestination_ownerpre_creation_commandidentityrangemanagementoptionsubscriber_upload_optionssubset_filterclausecreation_scriptschema_optionlogical_record_level_conflict_detectionlogical_record_level_conflict_resolution
När du anger ett värde för 3 , partition_optionsrensas metadata när Merge Agent körs och den partitionerade snapshoten går ut snabbare. När du använder detta alternativ bör du överväga att aktivera en av abonnenten begärd partitionerad snapshot. För mer information, se Skapa en ögonblicksbild för en sammanslagningspublikation med parameteriserade filter.
När egenskapen column_tracking sätts, om tabellen redan är publicerad i andra sammanslagningspublikationer, måste kolumnspårningen vara samma som värdet som används av befintliga artiklar baserade på denna tabell. Denna parameter är endast för tabellartiklar.
Om flera publikationer publicerar artiklar baserade på samma underliggande tabell, leder en ändring delete_tracking av egenskapen eller egenskapen compensate_for_errors för en artikel till att samma ändring görs i de andra artiklarna som är baserade på samma tabell.
Om Publisher-inloggningen/användarkontot som används av sammanslagningsprocessen inte har rätt tabellbehörigheter, loggas de ogiltiga ändringarna som konflikter.
När du ändrar värdet på schema_option, utför systemet ingen bitvis uppdatering. Detta innebär att när du sätter schema_option att använda sp_changemergearticle, kan befintliga bitinställningar stängas av. För att behålla de befintliga inställningarna bör du utföra & (Bitvis OCH) mellan värdet du sätter och det aktuella värdet av schema_option, vilket kan bestämmas genom att köra sp_helpmergearticle.
Caution
När du har många (kanske hundratals) artiklar i en publikation och skriver sp_changemergearticle för en av artiklarna kan det ta lång tid att slutföra sin text.
Giltig schemaoptionstabell
Följande tabell beskriver de tillåtna schema_option värdena, beroende på artikeltyp.
| Artikeltyp | Schemaoptionsvärden |
|---|---|
func schema only |
0x01 och 0x2000 |
indexed view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, , 0x1000000och 0x200000 |
proc schema only |
0x01 och 0x2000 |
table |
Alla alternativ. |
view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, , 0x1000000och 0x200000 |
Examples
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Permissions
Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_changemergearticle.