sys.sp_changepublication (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Verandert de eigenschappen van een publicatie. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.

Transact-SQL syntaxis-conventies

Syntax

sys.sp_changepublication
    [ [ @publication = ] N'publication' ]
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Arguments

[ @publication = ] N'publicatie'

De naam van de publicatie. @publication is een systeemnaam, met als standaard .NULL

[ @property = ] N'eigenschap'

De publicatie-eigenschap om te veranderen. @property is nvarchar(255), met als standaard .NULL

[ @value = ] N'waarde'

De nieuwe eigenschapswaarde. @value is nvarchar(255), met een standaardwaarde van NULL.

Deze tabel beschrijft de eigenschappen van de publicatie die kunnen worden gewijzigd en beperkingen op de waarden voor die eigenschappen.

Property Value Description
allow_anonymous true Anonieme abonnementen kunnen worden aangemaakt voor de betreffende publicatie, en immediate_sync moeten ook .true Kan niet worden aangepast voor peer-to-peer publicaties.
false Anonieme abonnementen kunnen niet worden aangemaakt voor de betreffende publicatie. Kan niet worden aangepast voor peer-to-peer publicaties.
allow_initialize_from_backup true Abonnees kunnen een abonnement op deze publicatie initialiseren vanuit een back-up in plaats van een eerste snapshot. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
false Abonnees moeten de eerste snapshot gebruiken. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
allow_partition_switch true ALTER TABLE...SWITCH statements kunnen worden uitgevoerd op basis van de gepubliceerde database. Zie Gepartitioneerde tabellen en indexen repliceren voor meer informatie.
false ALTER TABLE...SWITCH Statements kunnen niet worden uitgevoerd op de gepubliceerde database.
allow_pull true Trekabonnementen zijn toegestaan voor de betreffende publicatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
false Pull-abonnementen zijn niet toegestaan voor de betreffende publicatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
allow_push true Push-abonnementen zijn toegestaan voor de betreffende publicatie.
false Push-abonnementen zijn niet toegestaan voor de betreffende publicatie.
allow_subscription_copy true Maakt het mogelijk om databases te kopiëren die zich abonneren op deze publicatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
false Schakelt de mogelijkheid uit om databases te kopiëren die zich abonneren op deze publicatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
alt_snapshot_folder Locatie van de alternatieve map voor de snapshot.
centralized_conflicts true Conflictgegevens worden opgeslagen bij de Publisher. Kan alleen worden gewijzigd als er geen actieve abonnementen zijn. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
false Conflictregisters worden opgeslagen bij zowel de Publisher als bij de abonnee die het conflict heeft veroorzaakt. Kan alleen worden gewijzigd als er geen actieve abonnementen zijn. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
compress_snapshot true Snapshot in een alternatieve snapshotmap wordt gecomprimeerd in het .cab bestandsformaat. De snapshot in de standaard snapshotmap kan niet worden gecomprimeerd.
false Snapshot is niet gecomprimeerd, wat het standaardgedrag is voor replicatie.
conflict_policy pub wins Beleid voor conflictoplossing voor het bijwerken van abonnees waar de Publisher het conflict wint. Deze eigenschap kan alleen worden gewijzigd als er geen actieve abonnementen zijn. Niet ondersteund door Oracle Publishers.
sub reinit Voor het updaten van abonnees moet het abonnement opnieuw worden geïntinitieerd als er een conflict optreedt. Deze eigenschap kan alleen worden gewijzigd als er geen actieve abonnementen zijn. Niet ondersteund door Oracle Publishers.
sub wins Beleid voor conflictoplossing voor het bijwerken van abonnees waar de abonnee het conflict wint. Deze eigenschap kan alleen worden gewijzigd als er geen actieve abonnementen zijn. Niet ondersteund door Oracle Publishers.
conflict_retention Een int-waarde die de conflictretentieperiode aangeeft, in dagen. De standaard retentie is 14 dagen. 0 Dat betekent dat er geen conflictopruiming nodig is. Niet ondersteund door Oracle Publishers.
description Optionele vermelding van de publicatie.
enabled_for_het_sub true Maakt het mogelijk dat de publicatie niet-SQL Server-abonnees ondersteunt. enabled_for_het_sub Kan niet worden gewijzigd als er abonnementen op de publicatie zijn. Je moet mogelijk sp_changepublication uitvoeren om aan de volgende eisen te voldoen voordat je true zet enabled_for_het_sub :
- allow_queued_tran moet wel zijn false.
- allow_sync_tran moet wel zijn false.
Wijzigen enabled_for_het_sub naar true kan de bestaande publicatie-instellingen veranderen. Zie Niet-SQL Server-abonnees voor meer informatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
false De publicatie ondersteunt geen niet-SQL Server-abonnees. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
enabled_for_internet true Publicatie is ingeschakeld voor het internet, en File Transfer Protocol (FTP) kan worden gebruikt om de snapshotbestanden naar een abonnee over te dragen. De synchronisatiebestanden voor de publicatie worden in de volgende map geplaatst: C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address Kan niet NULL. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
false Publicatie is niet ingeschakeld op het internet. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
enabled_for_p2p true De publicatie ondersteunt peer-to-peer replicatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
Om op truete stellen enabled_for_p2p gelden de volgende beperkingen:
- allow_anonymous Moet wel false
- allow_dts moet wel zijn false.
- allow_initialize_from_backup Moet wel true
- allow_queued_tran moet wel zijn false.
- allow_sync_tran moet wel zijn false.
- enabled_for_het_sub moet wel zijn false.
- independent_agent moet wel zijn true.
- repl_freq moet wel zijn continuous.
- replicate_ddl moet wel zijn 1.
false De publicatie ondersteunt geen peer-to-peer replicatie. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
ftp_address FTP-toegankelijke locatie van de publicatiesnapshotbestanden. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
ftp_login Gebruikersnaam gebruikt om verbinding te maken met de FTP-service, en de waarde anonymous is toegestaan. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
ftp_password Wachtwoord voor de gebruikersnaam die wordt gebruikt om verbinding te maken met de FTP-dienst. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
ftp_port Poortnummer van de FTP-dienst voor de distributeur. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
ftp_subdirectory Geeft aan waar de snapshotbestanden worden aangemaakt als de publicatie het propageren van snapshots via FTP ondersteunt. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
immediate_sync true Synchronisatiebestanden voor de publicatie worden aangemaakt of opnieuw aangemaakt telkens wanneer de Snapshot Agent draait. Abonnees kunnen de synchronisatiebestanden direct na het abonnement ontvangen, als de Snapshot Agent één keer voltooid is vóór het abonnement. Nieuwe abonnementen ontvangen de nieuwste synchronisatiebestanden die worden gegenereerd door de meest recente uitvoering van de Snapshot Agent. independent_agent moet ook zijn true. Voor meer informatie, zie Effect van onmiddellijke synchronisatie.
false Synchronisatiebestanden worden alleen aangemaakt als er nieuwe abonnementen zijn gemaakt. Abonnees kunnen de synchronisatiebestanden pas ontvangen na het abonnement als de Snapshot Agent is gestart en voltooid.
independent_agent true De publicatie heeft een eigen speciale Distribution Agent.
false Publicatie gebruikt een gedeelde Distribution Agent, en elk publicatie/abonnementsdatabasepaar heeft een gedeelde agent.
p2p_continue_onconflict true De Distribution Agent blijft wijzigingen verwerken wanneer een conflict wordt gedetecteerd.

Voorzichtigheid: U wordt aangeraden de standaardwaarde van FALSE. Wanneer deze optie is ingesteld TRUEop, probeert de distributieagent gegevens in de topologie te convergeren door de conflicterende rij van het knooppunt toe te passen die de hoogste originator-id is. Deze methode garandeert geen convergentie. Zorg ervoor dat de topologie consistent is nadat een conflict is gedetecteerd. Zie 'Conflicten afhandelen' in Peer-to-Peer - Conflictdetectie in Peer-to-Peer-replicatie voor meer informatie.
false De Distribution Agent stopt met het verwerken van wijzigingen wanneer een conflict wordt gedetecteerd.
post_snapshot_script Specificeert de locatie van een Transact-SQL scriptbestand dat de Distribution Agent uitvoert nadat alle andere gerepliceerde objectscripts en data zijn toegepast tijdens een initiële synchronisatie.
pre_snapshot_script Specificeert de locatie van een Transact-SQL scriptbestand dat de Distribution Agent uitvoert voordat alle andere gerepliceerde objectscripts en data worden toegepast tijdens een initiële synchronisatie.
publish_to_ActiveDirectory true Deze parameter is verouderd en wordt alleen ondersteund voor de achterwaartse compatibiliteit van scripts. Je kunt geen publicatie-informatie meer toevoegen aan de Microsoft Active Directory.
false Verwijdert de publicatie-informatie uit Active Directory.
queue_type sql Gebruik SQL Server om transacties op te slaan. Deze eigenschap kan alleen worden gewijzigd als er geen actieve abonnementen zijn.

Opmerking: Ondersteuning voor het gebruik van Microsoft Message Queuing is stopgezet. Het specificeren van een waarde van msmq voor @value resulteert in een fout.
redirected_publisher De naam van de listener van de beschikbaarheidsgroep. Gebruikt bij peer-to-peer replicatie wanneer een peer in een beschikbaarheidsgroep zit. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan. Geïntroduceerd in SQL Server 2019 (15.x) CU 13. Voor meer informatie, zie Configureer één peer als onderdeel van de beschikbaarheidsgroep of Configureer beide peers in beschikbaarheidsgroepen.
repl_freq continuous Publiceert de output van alle log-gebaseerde transacties.
snapshot Publiceert alleen geplande synchronisatiegebeurtenissen.
replicate_ddl 1 Data definition language (DDL) statements die bij de uitgever worden uitgevoerd, worden gerepliceerd. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan.
0 DDL-statements worden niet gerepliceerd. Deze eigenschap kan niet worden gewijzigd voor publicaties die niet over SQL Server gaan. Replicatie van schemawijzigingen kan niet worden uitgeschakeld bij peer-to-peer replicatie.
replicate_partition_switch true ALTER TABLE...SWITCH statements die worden uitgevoerd tegen de gepubliceerde database moeten worden gerepliceerd naar abonnees. Deze optie is alleen geldig als allow_partition_switch deze is ingesteld op true. Zie Gepartitioneerde tabellen en indexen repliceren voor meer informatie.
false ALTER TABLE...SWITCH statements mogen niet worden gerepliceerd aan abonnees.
retention INT die de retentieperiode in uren voor abonnementsactiviteiten vertegenwoordigt. Als een abonnement niet actief is binnen de retentieperiode, wordt het verwijderd.
snapshot_in_defaultfolder true Snapshotbestanden worden opgeslagen in de standaard snapshotmap. Als alt_snapshot_folder ook wordt gespecificeerd, worden snapshotbestanden opgeslagen op zowel de standaard- als alternatieve locatie.
false Snapshotbestanden worden opgeslagen op de alternatieve locatie die door alt_snapshot_folderis gespecificeerd.
status active Publicatiegegevens zijn direct beschikbaar voor abonnees zodra de publicatie is aangemaakt. Niet ondersteund door Oracle Publishers.
inactive Publicatiegegevens zijn niet beschikbaar voor abonnees wanneer de publicatie wordt aangemaakt. Niet ondersteund door Oracle Publishers.
sync_method native Gebruikt native-mode bulkkopie-uitvoer van alle tabellen bij het synchroniseren van abonnementen.
character Gebruikt bulkkopie-uitvoer van alle tabellen in tekenmodus bij het synchroniseren van abonnementen.
concurrent Gebruikt native-mode bulk-copy programma-uitvoer van alle tabellen, maar vergrendelt tabellen niet tijdens het snapshotgeneratieproces. Niet geldig voor snapshotreplicatie.
concurrent_c Gebruikt bulk-copy van de uitvoer van alle tabellen met karaktermodus, maar vergrendelt tabellen niet tijdens het snapshotgeneratieproces. Niet geldig voor snapshotreplicatie.
taskid Deze eigenschap is verouderd en wordt niet langer ondersteund.
allow_drop true Maakt DLL-ondersteuning mogelijk DROP TABLE voor artikelen die deel uitmaken van transactionele replicatie. Minimaal ondersteunde versie: SQL Server 2014 (12.x) Service Pack 2 of hoger en SQL Server 2016 (13.x) Service Pack 1 of hoger. Voor meer informatie, zie KB 3170123
false (standaard) Schakelt DROP TABLE DLL-ondersteuning uit voor artikelen die deel uitmaken van transactionele replicatie.
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.

  • 0 geeft aan dat wijzigingen in het artikel niet ertoe leiden dat de momentopname ongeldig is. 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 wijzigingen in het artikel de snapshot ongeldig kunnen maken. Als er bestaande abonnementen zijn die een nieuwe snapshot vereisen, geeft deze waarde 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.

  • 0 geeft aan dat wijzigingen in het artikel niet ertoe leiden dat het abonnement opnieuw wordt geïnitialiseerd. 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 specificeert dat wijzigingen in het artikel ervoor zorgen dat het bestaande abonnement opnieuw wordt geïntinitialiseerd, en geeft toestemming voor de herinitialisatie van het abonnement.

[ @publisher = ] N'uitgever'

Specificeert een niet-SQL Server Publisher. @publisher is sysname, met als standaard NULL.

@publisher mag niet gebruikt worden bij het wijzigen van artikeleigenschappen op een SQL Server Publisher.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_changepublication wordt gebruikt bij snapshotreplicatie en transactionele replicatie.

Na het wijzigen van een van de volgende eigenschappen moet je een nieuwe snapshot genereren en moet je een waarde van 1 specificeren voor de @force_invalidate_snapshot-parameter .

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

Om publicatieobjecten in de Active Directory met de publish_to_active_directory parameter te vermelden, moet het SQL Server-object al in de Active Directory zijn aangemaakt.

Effect van onmiddellijke synchronisatie

Wanneer directe synchronisatie aanstaat, worden alle wijzigingen in het logboek direct na het genereren van de eerste snapshot gevolgd, zelfs als er geen abonnementen zijn. Gelogde wijzigingen worden gebruikt wanneer een klant back-up gebruikt om een nieuwe peer-node toe te voegen. Nadat de back-up is hersteld, wordt de peer gesynchroniseerd met alle andere wijzigingen die na het maken van de back-up zijn doorgevoerd. Omdat de commando's worden gevolgd in de distributiedatabase, kan de synchronisatielogica kijken naar het laatst geback-upte LSN en dit als uitgangspunt gebruiken, wetende dat het commando beschikbaar is als de back-up binnen de maximale retentieperiode is genomen. (De standaardwaarde voor de minimale retentieperiode is 0 uur, en de maximale retentieperiode is 24 uur.)

Wanneer directe synchronisatie niet is gegaan, worden wijzigingen minstens de minimale retentieperiode behouden en direct opgeschoond voor alle transacties die al zijn gerepliceerd. Als directe synchronisatie uit staat en is geconfigureerd met de standaard retentieperiode, is het waarschijnlijk dat de benodigde wijzigingen na het maken van de back-up zijn opgeschoond, en zal de nieuwe peer-node niet correct worden geïnitialiseerd. De enige optie die overblijft is om de topologie te quiesceren. Het instellen van directe synchronisatie op aan biedt meer flexibiliteit en is de aanbevolen instelling voor P2P-replicatie.

Examples

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Permissions

Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_changepublication.