sp_changepublication (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Ändert die Eigenschaften einer Veröffentlichung. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

sp_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

Argumente

[ @publication = ] 'publication' Ist der Name der Publikation. publikation ist sysname, mit einem Standardwert von NULL.

[ @property = ] 'property' Ändert sich die Publikationseigenschaft. property is nvarchar(255).

[ @value = ] 'value' Ist der neue Eigenschaftswert. value is nvarchar(255), with a default of NULL.

Diese Tabelle beschreibt die änderbaren Eigenschaften der Veröffentlichung sowie die Einschränkungen für die Werte dieser Eigenschaften.

Eigenschaft Wert Beschreibung
allow_anonymous true Anonyme Abonnements können für die angegebene Publikation erstellt werden, und immediate_sync müssen ebenfalls wahr sein. Kann für Peer-zu-Peer-Veröffentlichungen nicht geändert werden.
false Anonyme Abonnements können für die Veröffentlichung nicht erstellt werden. Kann für Peer-zu-Peer-Veröffentlichungen nicht geändert werden.
allow_initialize_from_backup true Abonnenten können ein Abonnement für diese Veröffentlichung aus einer Sicherung statt aus einer Anfangsmomentaufnahme initialisieren. Diese Eigenschaft kann für Nicht-Microsoft SQL Server-Publikationen nicht geändert werden.
false Abonnenten müssen die Anfangsmomentaufnahme verwenden. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
allow_partition_switch true ALTER TABLE... SWITCH-Anweisungen können für die veröffentlichte Datenbank ausgeführt werden. Weitere Informationen finden Sie unter Replicate Partitioned Tables and Indexes.
false ALTER TABLE... SWITCH-Anweisungen können nicht für die veröffentlichte Datenbank ausgeführt werden.
allow_pull true Pullabonnements sind für die angegebene Veröffentlichung zulässig. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
false Pullabonnements sind für die angegebene Veröffentlichung nicht zulässig. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
allow_push true Pushabonnements sind für die angegebene Veröffentlichung zulässig.
false Pushabonnements sind für die angegebene Veröffentlichung nicht zulässig.
allow_subscription_copy true Aktiviert die Möglichkeit zum Kopieren von Datenbanken, die diese Veröffentlichung abonnieren. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
false Deaktiviert die Möglichkeit zum Kopieren von Datenbanken, die diese Veröffentlichung abonnieren. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
alt_snapshot_folder Der Speicherort des alternativen Ordners für die Momentaufnahme.
centralized_conflicts true Die Konfliktdatensätze werden auf dem Verleger gespeichert. Kann nur geändert werden, wenn keine aktiven Abonnements vorhanden sind. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
false Die Konfliktdatensätze werden auf dem Verleger und auf dem Abonnenten gespeichert, der den Konflikt verursacht hat. Kann nur geändert werden, wenn keine aktiven Abonnements vorhanden sind. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
compress_snapshot true Die Momentaufnahme in einem alternativen Momentaufnahmeordner wird in das CAB-Dateiformat komprimiert. Die Momentaufnahme im Standard-Momentaufnahmeordner kann nicht komprimiert werden.
false Die Momentaufnahme wird nicht komprimiert. Dies ist das Standardverhalten für die Replikation.
conflict_policy Pub wins Richtlinie zur Konfliktlösung für Updateabonnenten, bei der der Verleger den Konflikt gewinnt. Diese Eigenschaft kann nur geändert werden, wenn keine aktiven Abonnements vorhanden sind. Diese Option wird für Oracle-Verleger nicht unterstützt.
Sub reinit Wenn für Updateabonnenten ein Konflikt auftritt, muss das Abonnement erneut initialisiert werden. Diese Eigenschaft kann nur geändert werden, wenn keine aktiven Abonnements vorhanden sind. Diese Option wird für Oracle-Verleger nicht unterstützt.
Sub wins Richtlinie zur Konfliktlösung für Updateabonnenten, bei der der Abonnent den Konflikt gewinnt. Diese Eigenschaft kann nur geändert werden, wenn keine aktiven Abonnements vorhanden sind. Diese Option wird für Oracle-Verleger nicht unterstützt.
conflict_retention int , das den Aufbewahrungszeitraum für Konflikte in Tagen angibt. Die Standardaufbewahrungsdauer beträgt 14 Tage. 0 bedeutet, dass kein Konflikt sauber erforderlich ist. Diese Option wird für Oracle-Verleger nicht unterstützt.
Beschreibung Eine optionale Beschreibung der Veröffentlichung.
enabled_for_het_sub true Ermöglicht der Publikation die Unterstützung von Nicht-SQL Server-Abonnenten. enabled_for_het_sub können nicht geändert werden, wenn abonnements für die Publikation vorhanden sind. Möglicherweise müssen Sie gespeicherte Replikationsprozeduren (Transact-SQL) ausführen, um die folgenden Anforderungen einzuhalten, bevor Sie enabled_for_het_sub auf "true" festlegen:
- allow_queued_tran muss "false" sein.
- allow_sync_tran muss "false" sein.
Wenn Sie enabled_for_het_sub auf "true " ändern, können Sie vorhandene Publikationseinstellungen ändern. Weitere Informationen finden Sie unter Non-SQL Server Subscribers. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
false Die Publikation unterstützt keine Nicht-SQL Server-Abonnenten. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
enabled_for_internet true Die Veröffentlichung ist für das Internet aktiviert. FTP (File Transfer Protocol) kann dazu verwendet werden, die Momentaufnahmedateien an einen Abonnenten zu übermitteln. Die Synchronisierungsdateien für die Veröffentlichung werden im folgenden Verzeichnis abgelegt: C:\Programme\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address darf nicht NULL sein. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
false Die Veröffentlichung ist nicht für das Internet aktiviert. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
enabled_for_p2p true Die Veröffentlichung unterstützt die Peer-zu-Peer-Replikation. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
Um enabled_for_p2p auf "true" festzulegen, gelten die folgenden Einschränkungen:
- allow_anonymous muss "false" sein.
- allow_dts muss "false" sein.
- allow_initialize_from_backup muss wahr sein
- allow_queued_tran muss "false" sein.
- allow_sync_tran muss "false" sein.
- enabled_for_het_sub muss "false" sein.
- independent_agent muss wahr sein.
- repl_freq müssen fortlaufend sein.
- replicate_ddl muss 1 sein.
false Die Veröffentlichung unterstützt die Peer-zu-Peer-Replikation nicht. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
ftp_address Der Speicherort der Veröffentlichungsmomentaufnahmedateien, auf den über FTP zugegriffen werden kann. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
ftp_login Der Benutzername, mit dem eine Verbindung mit dem FTP-Dienst hergestellt wird. Der Wert ANONYMOUS ist zulässig. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
ftp_password Das Kennwort für den Benutzernamen, mit dem eine Verbindung mit dem FTP-Dienst hergestellt wird. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
ftp_port Die Nummer des Anschlusses für den FTP-Dienst des Verteilers. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
ftp_subdirectory Gibt an, wo die Momentaufnahme Dateien erstellt werden, wenn die Publikation das Verteilen von Momentaufnahme mithilfe von FTP unterstützt. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
immediate_sync true Die Synchronisierungsdateien für die Veröffentlichung werden bei jeder Ausführung des Momentaufnahme-Agents erstellt oder neu erstellt. Abonnenten können die Synchronisierungsdateien unmittelbar nach der Abonnierung erhalten, wenn der Momentaufnahme-Agent vor der Abonnierung abgeschlossen wurde. Neue Abonnements rufen die neuesten Synchronisierungsdateien ab, die von der letzten Ausführung des Momentaufnahmeagents generiert wurden. independent_agent muss auch wahr sein. Weitere Informationen zu immediate_sync finden Sie weiter unten in den Hinweisen.
false Synchronisierungsdateien werden nur erstellt, wenn neue Abonnements vorhanden sind. Abonnenten können die Synchronisierungsdateien nach dem Abonnement erst erhalten, wenn die Momentaufnahmen-Agent gestartet und abgeschlossen ist.
independent_agent true Die Veröffentlichung verfügt über ihren eigenen dedizierten Verteilungs-Agent.
false Die Veröffentlichung verwendet einen freigegebenen Verteilungs-Agent, und jedes Paar aus Veröffentlichungsdatenbank und Abonnementdatenbank verfügt über einen freigegebenen Agent.
p2p_continue_onconflict true Der Verteilungs-Agent setzt bei Erkennung eines Konflikts die Verarbeitung von Änderungen fort.
Achtung: Es wird empfohlen, den Standardwert von FALSE. Wenn diese Option auf TRUE festgelegt ist, versucht die Verteilungs-Agent, Daten in der Topologie zusammenzuvergen, indem die konfliktierende Zeile vom Knoten mit der höchsten Absender-ID angewendet wird. Bei dieser Methode ist keine Konvergenz garantiert. Sie sollten sicherstellen, dass die Topologie nach der Erkennung eines Konflikts konsistent ist. Weitere Informationen finden Sie im Abschnitt "Konfliktbehandlung" unter Conflict Detection in Peer-to-Peer Replication.
false Der Verteilungs-Agent beendet bei Erkennung eines Konflikts die Verarbeitung von Änderungen.
post_snapshot_script Gibt den Speicherort einer Transact-SQL-Skriptdatei an, die vom Verteilungs-Agent ausgeführt wird, nachdem alle anderen replizierten Objektskripts und -daten während einer anfänglichen Synchronisierung angewendet wurden.
pre_snapshot_script Gibt den Speicherort einer Transact-SQL-Skriptdatei an, die vom Verteilungs-Agent ausgeführt wird, bevor alle anderen replizierten Objektskripts und -daten während einer anfänglichen Synchronisierung angewendet wurden.
publish_to_ActiveDirectory true Dieser Parameter wurde als veraltet markiert und wird nur zum Sicherstellen der Abwärtskompatibilität von Skripts unterstützt. Sie können dem Microsoft Active Directory keine Publikationsinformationen mehr hinzufügen.
false Entfernt die Veröffentlichungsinformationen aus Active Directory.
queue_type sql Verwenden Sie SQL Server, um Transaktionen zu speichern. Diese Eigenschaft kann nur geändert werden, wenn keine aktiven Abonnements vorhanden sind.

Hinweis: Der Support für die Verwendung von Microsoft Message Queuing wurde eingestellt. Das Angeben eines Werts von msmq für den Wert führt zu einem Fehler.
redirected_publisher Der Name des Verfügbarkeitsgruppenlisteners. Wird in der Peer-to-Peer-Replikation verwendet, wenn sich ein Peer in einer Verfügbarkeitsgruppe befindet. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden. In SQL Server 2019 (15.x) CU 13 eingeführt. Weitere Informationen finden Sie unter Konfigurieren eines Peers als Teil der Verfügbarkeitsgruppe oder Konfigurieren beider Peers in Verfügbarkeitsgruppen.
repl_freq continuous Veröffentlicht die Ausgabe aller protokollbasierten Transaktionen.
Momentaufnahme Veröffentlicht nur geplante Synchronisierungsereignisse.
replicate_ddl 1 Auf dem Verleger ausgeführte Anweisungen der Datendefinitionssprache (DDL, Data Definition Language) werden repliziert. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden.
0 DDL-Anweisungen werden nicht repliziert. Diese Eigenschaft kann für Nicht-SQL Server-Publikationen nicht geändert werden. Die Replikation von Schemaänderungen kann nicht deaktiviert werden, wenn Peer-zu-Peer-Replikation verwendet wird.
replicate_partition_switch true ALTER TABLE... SWITCH-Anweisungen, die für die veröffentlichte Datenbank ausgeführt werden, sollten in Abonnenten repliziert werden. Diese Option ist nur gültig, wenn allow_partition_switch auf TRUE festgelegt ist. Weitere Informationen finden Sie unter Replicate Partitioned Tables and Indexes.
false ALTER TABLE... SWITCH-Anweisungen sollten nicht in Abonnenten repliziert werden.
Beibehaltung int , der den Aufbewahrungszeitraum in Stunden für Abonnementaktivitäten darstellt. Wenn ein Abonnement innerhalb der Beibehaltungsdauer nicht aktiv ist, wird es entfernt.
snapshot_in_defaultfolder true Momentaufnahmedateien werden im Standardmomentaufnahmeordner gespeichert. Wenn alt_Momentaufnahme_folderebenfalls angegeben ist, werden Momentaufnahme Dateien sowohl an den Standardspeicherorten als auch an alternativen Speicherorten gespeichert.
false Momentaufnahmendateien werden an dem alternativen Speicherort gespeichert, der durch alt_Momentaufnahme_folder angegeben wird.
status active Veröffentlichungsdaten sind für Abonnenten sofort beim Erstellen der Veröffentlichung verfügbar. Diese Option wird für Oracle-Verleger nicht unterstützt.
inactive Veröffentlichungsdaten sind für Abonnenten nicht beim Erstellen der Veröffentlichung verfügbar. Diese Option wird für Oracle-Verleger nicht unterstützt.
sync_method native Verwendet beim Synchronisieren von Abonnements eine Massenkopierausgabe aller Tabellen im einheitlichen Modus.
character Verwendet beim Synchronisieren von Abonnements eine Massenkopierausgabe aller Tabellen im Zeichenmodus.
Gleichzeitige Verwendet eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus, sperrt jedoch die Tabellen beim Generieren der Momentaufnahme nicht. Nicht für die Momentaufnahmereplikation gültig.
concurrent_c Verwendet eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus, sperrt jedoch die Tabellen beim Generieren der Momentaufnahme nicht. Nicht für die Momentaufnahmereplikation gültig.
Taskid Diese Eigenschaft wurde als veraltet markiert und wird nicht mehr unterstützt.
allow_drop true Aktiviert DROP TABLE die DLL-Unterstützung für Artikel, die Teil der Transaktionsreplikation sind. Mindestens unterstützte Version: SQL Server 2014 (12.x) Service Pack 2 oder höher und SQL Server 2016 (13.x) Service Pack 1 oder höher. Zusätzliche Referenz: KB-3170123
false Deaktiviert die DROP TABLE DLL-Unterstützung für Artikel, die Teil der Transaktionsreplikation sind. Dies ist der Standardwert für diese Eigenschaft.
NULL (Standard) Gibt die Liste der unterstützten Werte für die Eigenschaft zurück.

[ @force_invalidate_snapshot = ] force_invalidate_snapshotErkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion eine vorhandene Momentaufnahme ungültig macht. force_invalidate_Momentaufnahme ist ein bisschen mit der Standardeinstellung 0.

  • 0 gibt an, dass Änderungen am Artikel nicht dazu führen, dass die Momentaufnahme ungültig sind. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.
  • 1 gibt an, dass Änderungen am Artikel dazu führen können, dass die Momentaufnahme ungültig sind. Wenn Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern würden, wird mit diesem Wert die Berechtigung erteilt, die vorhandene Momentaufnahme als veraltet zu markieren und eine neue Momentaufnahme zu generieren.
    Weitere Informationen zu den Eigenschaften, bei deren Änderung die Generierung einer neuen Momentaufnahme erforderlich ist, finden Sie im Abschnitt "Hinweise".

[@force_reinit_subscription = ] force_reinit_subscription
Erkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise erfordert, dass vorhandene Abonnements erneut initialisiert werden. force_reinit_subscription ist ein bisschen mit der Standardeinstellung 0.

  • 0 gibt an, dass Änderungen am Artikel nicht dazu führen, dass das Abonnement erneut initialisiert wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderung die Neuinitialisierung vorhandener Abonnements erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.
  • 1 gibt an, dass Änderungen am Artikel dazu führen, dass das vorhandene Abonnement erneut initialisiert wird, und erteilt die Berechtigung für die Erneute Initialisierung des Abonnements.

[ @publisher = ] 'publisher' Gibt einen Nicht-SQL Server-Herausgeber an. Publisher ist "sysname" mit dem Standardwert NULL.

Hinweis

Publisher sollte nicht verwendet werden, wenn Artikeleigenschaften in einem SQL Server-Publisher geändert werden.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_changepublication wird in Momentaufnahme Replikation und Transaktionsreplikation verwendet.

Nachdem Sie eine der folgenden Eigenschaften geändert haben, müssen Sie eine neue Momentaufnahme generieren, und Sie müssen einen Wert von 1 für den force_invalidate_Momentaufnahme-Parameter angeben.

  • 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

Zum Auflisten von Publikationsobjekten in Active Directory mithilfe des parameters publish_to_active_directory muss das SQL Server-Objekt bereits in Active Directory erstellt werden.

Auswirkungen von "immediate_sync"

Wenn die sofortige Synchronisierung aktiviert ist, werden alle Änderungen im Protokoll unmittelbar nach der ersten Momentaufnahme generiert, auch wenn keine Abonnements vorhanden sind. Protokollierte Änderungen werden verwendet, wenn ein Kunde eine Sicherung verwendet, um einen neuen Peerknoten hinzuzufügen. Nachdem die Sicherung wiederhergestellt wurde, wird der Peer mit allen anderen Änderungen synchronisiert, die nach dem Erstellen der Sicherung auftreten. Da die Befehle in der Verteilungsdatenbank nachverfolgt werden, kann die Synchronisierungslogik den letzten gesicherten LSN betrachten und diese als Ausgangspunkt verwenden, da sie wissen, dass der Befehl verfügbar ist, wenn die Sicherung innerhalb des maximalen Aufbewahrungszeitraums ausgeführt wurde. (Der Standardwert für den min. Aufbewahrungszeitraum beträgt 0 Stunden, und der maximale Aufbewahrungszeitraum beträgt 24 Stunden.)

Wenn die sofortige Synchronisierung deaktiviert ist, werden Änderungen mindestens den Aufbewahrungszeitraum für min. beibehalten und sauber sofort für alle transaktionen, die bereits repliziert wurden. Wenn immediate_sync deaktiviert und mit der Standardbeibehaltungsdauer konfiguriert ist, ist es wahrscheinlich, dass die erforderlichen Änderungen nach der Sicherung bereinigt wurden und dass der neue Peerknoten nicht ordnungsgemäß initialisiert wird. Die einzige Option besteht darin, die Topologie in einen inaktiven Zustand zu versetzen. Wenn Sie immediate_synch aktivieren, erhöht sich die Flexibilität. Darüber hinaus ist dies die empfohlene Einstellung für P2P-Replikationen.

Beispiel

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder db_owner festen Datenbankrolle können sp_changepublication ausgeführt werden.

Weitere Informationen

Anzeigen und Ändern von Veröffentlichungseigenschaften
Ändern von Veröffentlichungs- und Artikeleigenschaften
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Gespeicherte Replikationsprozeduren (Transact-SQL)