sys.sp_changepublication (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Ändrar en publikations egenskaper. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

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

Namnet på publikationen. @publication är sysname, med standardvärdet .NULL

[ @property = ] N'property'

Publiceringsegenskapen att ändras. @property är nvarchar(255), med en standard på NULL.

[ @value = ] N'value'

Det nya egenskapsvärdet. @value är nvarchar(255), med standardvärdet NULL.

Denna tabell beskriver vilka egenskaper som kan ändras för publikationen och begränsningar för värdena för dessa egenskaper.

Property Value Description
allow_anonymous true Anonyma prenumerationer kan skapas för den aktuella publikationen och immediate_sync måste också vara true. Kan inte bytas ut för peer-to-peer-publikationer.
false Anonyma prenumerationer kan inte skapas för den aktuella publikationen. Kan inte bytas ut för peer-to-peer-publikationer.
allow_initialize_from_backup true Prenumeranter kan initiera en prenumeration på denna publikation från en backup istället för en initial snapshot. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
false Prenumeranter måste använda den initiala ögonblicksbilden. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
allow_partition_switch true ALTER TABLE...SWITCH Satser kan köras mot den publicerade databasen. Mer information finns i Replikera partitionerade tabeller och index.
false ALTER TABLE...SWITCH Satser kan inte köras mot den publicerade databasen.
allow_pull true Pull-prenumerationer är tillåtna för den aktuella publikationen. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
false Prenumerationer på pull är inte tillåtna för den aktuella publikationen. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
allow_push true Push-prenumerationer är tillåtna för den aktuella publikationen.
false Push-prenumerationer är inte tillåtna för den aktuella publikationen.
allow_subscription_copy true Möjliggör möjligheten att kopiera databaser som prenumererar på denna publikation. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
false Inaktiverar möjligheten att kopiera databaser som prenumererar på denna publikation. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
alt_snapshot_folder Platsen för den alternativa mappen för snapshoten.
centralized_conflicts true Konfliktposter lagras hos Publisher. Kan ändras endast om det inte finns några aktiva prenumerationer. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
false Konfliktposter lagras både hos Publisher och hos den prenumerant som orsakade konflikten. Kan ändras endast om det inte finns några aktiva prenumerationer. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
compress_snapshot true Snapshot i en alternativ snapshot-mapp komprimeras till .cab filformat. Snapshoten i standardmappen kan inte komprimeras.
false Snapshot är inte komprimerat, vilket är standardbeteendet för replikering.
conflict_policy pub wins Konfliktlösningspolicy för att uppdatera prenumeranter där Publisher vinner konflikten. Denna egenskap kan endast ändras om inga aktiva prenumerationer finns. Stöds inte för Oracle Publishers.
sub reinit För att uppdatera prenumeranter måste prenumerationen ominitieras om en konflikt uppstår. Denna egenskap kan endast ändras om inga aktiva prenumerationer finns. Stöds inte för Oracle Publishers.
sub wins Konfliktlösningspolicy för att uppdatera prenumeranter där prenumeranten vinner konflikten. Denna egenskap kan endast ändras om inga aktiva prenumerationer finns. Stöds inte för Oracle Publishers.
conflict_retention Ett int-värde som specificerar konfliktens lagringstid, i dagar. Standardbehållningen är 14 dagar. 0 vilket innebär att ingen konfliktsanering behövs. Stöds inte för Oracle Publishers.
description Valfri post som beskriver publikationen.
enabled_for_het_sub true Möjliggör för publikationen att stödja icke-SQL Server-prenumeranter. enabled_for_het_sub Det kan inte ändras när det finns prenumerationer på publikationen. Du kan behöva utföra sp_changepublication för att uppfylla följande krav innan du sätter enabled_for_het_sub på true:
- allow_queued_tran måste vara false.
- allow_sync_tran måste vara false.
Att byta enabled_for_het_sub till true kan ändra befintliga publiceringsinställningar. Mer information finns i Icke-SQL Server-prenumeranter. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
false Publikationen stöder inte prenumeranter som inte är SQL Server. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
enabled_for_internet true Publicering är aktiverad för Internet, och File Transfer Protocol (FTP) kan användas för att överföra snapshot-filerna till en abonnent. Synkroniseringsfilerna för publikationen läggs i följande katalog: C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address Det kan inte vara NULL. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
false Publicering är inte aktiverad på internet. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
enabled_for_p2p true Publikationen stödjer peer-to-peer-replikation. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
För att sätta enabled_for_p2p till truegäller följande begränsningar:
- allow_anonymous måste vara false
- allow_dts måste vara false.
- allow_initialize_from_backup måste vara true
- allow_queued_tran måste vara false.
- allow_sync_tran måste vara false.
- enabled_for_het_sub måste vara false.
- independent_agent måste vara true.
- repl_freq måste vara continuous.
- replicate_ddl måste vara 1.
false Publikationen stöder inte peer-to-peer-replikation. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
ftp_address FTP-tillgänglig plats för publiceringssnapshotfilerna. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
ftp_login Användarnamn används för att ansluta till FTP-tjänsten, och värdet anonymous är tillåtet. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
ftp_password Lösenord för användarnamnet som används för att ansluta till FTP-tjänsten. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
ftp_port Portnummer för FTP-tjänsten för distributören. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
ftp_subdirectory Specificerar var snapshot-filerna skapas om publikationen stödjer spridning av snapshots med FTP. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
immediate_sync true Synkroniseringsfiler för publiceringen skapas eller återskapas varje gång Snapshot Agent körs. Prenumeranter kan ta emot synkroniseringsfilerna omedelbart efter prenumerationen, om Snapshot Agent slutför en gång före prenumerationen. Nya prenumerationer får de senaste synkroniseringsfilerna som genereras av den senaste körningen av Snapshot Agent. independent_agent måste också vara true. För mer information, se Effekt av omedelbar synkronisering.
false Synkroniseringsfiler skapas endast om det finns nya prenumerationer. Prenumeranter kan inte ta emot synkroniseringsfilerna efter prenumerationen förrän Snapshot Agent har startats och slutförts.
independent_agent true Publikationen har sin egen dedikerade Distribution Agent.
false Publikation använder en delad Distribution Agent, och varje publikation/prenumerationspar har en gemensam agent.
p2p_continue_onconflict true Distribution Agent fortsätter att behandla ändringar när en konflikt upptäcks.

Försiktighet: Vi rekommenderar att du använder standardvärdet FALSE. När det här alternativet är inställt på TRUEförsöker distributionsagenten konvergera data i topologin genom att tillämpa den konfliktande raden från noden som är det högsta ursprungs-ID:t. Den här metoden garanterar inte konvergens. Du bör se till att topologin är konsekvent när en konflikt har identifierats. Mer information finns i "Hantera konflikter" i Peer-to-Peer – Konfliktidentifiering i Peer-to-Peer-replikering.
false Distribution Agent slutar behandla ändringar när en konflikt upptäcks.
post_snapshot_script Specificerar platsen för en Transact-SQL skriptfil som Distribution Agent kör efter att alla andra replikerade objektskript och data har applicerats under en initial synkronisering.
pre_snapshot_script Specificerar platsen för en Transact-SQL skriptfil som Distribution Agent kör innan alla andra replikerade objektskript och data appliceras under en initial synkronisering.
publish_to_ActiveDirectory true Denna parameter är föråldrad och stöds endast för bakåtkompatibilitet av skript. Du kan inte längre lägga till publiceringsinformation i Microsoft služba Active Directory.
false Tar bort publiceringsinformationen från služba Active Directory.
queue_type sql Använd SQL Server för att lagra transaktioner. Denna egenskap kan endast ändras om inga aktiva prenumerationer finns.

Notera: Stödet för att använda Microsoft Message Queuing upphör. Att ange ett värde på msmqför @value resulterar i ett fel.
redirected_publisher Namnet på tillgänglighetsgruppens lyssnare. Används i peer-to-peer-replikering när en peer är i en tillgänglighetsgrupp. Denna egenskap kan inte ändras för publikationer som inte är SQL Server. Introducerad i SQL Server 2019 (15.x) CU 13. För mer information, se Konfigurera en peer som en del av tillgänglighetsgruppen eller Konfigurera båda peers i tillgänglighetsgrupper.
repl_freq continuous Publicerar utdata från alla loggbaserade transaktioner.
snapshot Publicerar endast schemalagda synkroniseringshändelser.
replicate_ddl 1 Data definition language (DDL)-satser som körs hos utgivaren replikeras. Denna egenskap kan inte ändras för publikationer som inte är SQL Server.
0 DDL-satser replikeras inte. Denna egenskap kan inte ändras för publikationer som inte är SQL Server. Replikering av schemaändringar kan inte inaktiveras vid användning av peer-to-peer-replikering.
replicate_partition_switch true ALTER TABLE...SWITCH satser som körs mot den publicerade databasen bör replikeras till prenumeranter. Det här alternativet är endast giltigt om allow_partition_switch är inställt på true. Mer information finns i Replikera partitionerade tabeller och index.
false ALTER TABLE...SWITCH uttalanden ska inte replikeras till prenumeranter.
retention INT representerar lagringstiden, i timmar, för prenumerationsaktivitet. Om en prenumeration inte är aktiv inom lagringsperioden tas den bort.
snapshot_in_defaultfolder true Snapshot-filer lagras i standardmappen snapshot. Om det alt_snapshot_folder också anges lagras snapshot-filer både på standard- och alternativplatsen.
false Snapshot-filer lagras på den alternativa plats som anges av alt_snapshot_folder.
status active Publikationsdata är tillgängliga för prenumeranter omedelbart när publikationen skapas. Stöds inte för Oracle Publishers.
inactive Publikationsdata är inte tillgängliga för prenumeranter när publikationen skapas. Stöds inte för Oracle Publishers.
sync_method native Använder native-mode bulkkopiering av alla tabeller vid synkronisering av prenumerationer.
character Använder teckenläge med bulkkopiering av alla tabeller vid synkronisering av prenumerationer.
concurrent Använder native-mode bulk-copy programutdata från alla tabeller, men låser inte tabeller under snapshot-genereringen. Gäller inte för snapshot-replikering.
concurrent_c Använder masskopiering av programutdata från alla tabeller i karaktärsläge, men låser inte tabeller under snapshot-genereringen. Gäller inte för snapshot-replikering.
taskid Denna egenskap är föråldrad och stöds inte längre.
allow_drop true Möjliggör DROP TABLE DLL-stöd för artiklar som ingår i transaktionell replikation. Minsta stödda version: SQL Server 2014 (12.x) Service Pack 2 eller högre och SQL Server 2016 (13.x) Service Pack 1 eller högre. För mer information, se KB 3170123
false (standardinställning) Inaktiverar DLL-stöd DROP TABLE för artiklar som ingår i transaktionell replikation.
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.

  • 0 anger att ändringar i artikeln inte gör att ögonblicksbilden blir ogiltig. Om den lagrade proceduren upptäcker att ändringen kräver en ny snapshot, uppstår ett fel och inga ändringar görs.
  • 1 specificerar att ändringar i artikeln kan göra snapshoten ogiltig. Om det finns befintliga prenumerationer som skulle kräva en ny snapshot ger detta värde tillstånd för att den befintliga snapshoten kan markeras som föråldrad och en ny snapshot genereras.

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.

  • 0 anger att ändringar i artikeln inte gör att prenumerationen initieras på nytt. 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.
  • 1 anger att ändringar i artikeln orsakar att den befintliga prenumerationen ominitieras, och ger tillstånd för att prenumerationsreinitialiseringen ska ske.

[ @publisher = ] N'publisher'

Specificerar en icke-SQL Server Publisher. @publisher är sysname, med standardvärdet .NULL

@publisher bör inte användas när man ändrar artikelegenskaper på en SQL Server Publisher.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_changepublication används vid snapshot-replikering och transaktionell replikation.

Efter att ha ändrat någon av följande egenskaper måste du generera en ny snapshot, och du måste ange ett värde på 1 för @force_invalidate_snapshot-parametern .

  • 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

För att lista publiceringsobjekt i služba Active Directory med parametern publish_to_active_directory måste SQL Server-objektet redan skapas i služba Active Directory.

Effekt av omedelbar synkronisering

När omedelbar synkronisering är påslagen spåras alla ändringar i loggen omedelbart efter att den initiala snapshoten genererats även om det inte finns några prenumerationer. Loggade ändringar används när en kund använder backup för att lägga till en ny peer-nod. Efter att backupen återställts synkas peern med andra ändringar som sker efter att backupen tagits. Eftersom kommandona spåras i distributionsdatabasen kan synkroniseringslogiken titta på det senast säkerhetskopierade LSN:et och använda detta som utgångspunkt, med vetskapen om att kommandot är tillgängligt om säkerhetskopieringen togs inom maxlagringstiden. (Standardvärdet för minsta lagringstid är 0 timmar, och maximal lagringstid är 24 timmar.)

När omedelbar synkronisering är avstängd behålls ändringarna åtminstone under minsta lagringstid och rensas omedelbart för alla transaktioner som redan är replikerade. Om omedelbar synkronisering är avstängd och konfigurerad med standardlagringsperioden är det troligt att de nödvändiga ändringarna efter att säkerhetskopieringen togs har rensats bort, och den nya peer-noden kommer inte att initialiseras korrekt. Det enda alternativet som återstår är att quiesc-a topologin. Att ställa in omedelbar synkronisering på ger större flexibilitet och är rekommenderad inställning för P2P-replikering.

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

Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_changepublication.