sp_addpublication (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Erstellt eine Momentaufnahme- oder Transaktionsveröffentlichung. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addpublication
[ @publication = ] N'publication'
[ , [ @taskid = ] taskid ]
[ , [ @restricted = ] N'restricted' ]
[ , [ @sync_method = ] N'sync_method' ]
[ , [ @repl_freq = ] N'repl_freq' ]
[ , [ @description = ] N'description' ]
[ , [ @status = ] N'status' ]
[ , [ @independent_agent = ] N'independent_agent' ]
[ , [ @immediate_sync = ] N'immediate_sync' ]
[ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
[ , [ @allow_push = ] N'allow_push' ]
[ , [ @allow_pull = ] N'allow_pull' ]
[ , [ @allow_anonymous = ] N'allow_anonymous' ]
[ , [ @allow_sync_tran = ] N'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] N'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran = ] N'allow_queued_tran' ]
[ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
[ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
[ , [ @compress_snapshot = ] N'compress_snapshot' ]
[ , [ @ftp_address = ] N'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
[ , [ @ftp_login = ] N'ftp_login' ]
[ , [ @ftp_password = ] N'ftp_password' ]
[ , [ @allow_dts = ] N'allow_dts' ]
[ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
[ , [ @conflict_policy = ] N'conflict_policy' ]
[ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] N'queue_type' ]
[ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
[ , [ @logreader_job_name = ] N'logreader_job_name' ]
[ , [ @qreader_job_name = ] N'qreader_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @allow_initialize_from_backup = ] N'allow_initialize_from_backup' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @enabled_for_p2p = ] N'enabled_for_p2p' ]
[ , [ @publish_local_changes_only = ] N'publish_local_changes_only' ]
[ , [ @enabled_for_het_sub = ] N'enabled_for_het_sub' ]
[ , [ @p2p_conflictdetection = ] N'p2p_conflictdetection' ]
[ , [ @p2p_originator_id = ] p2p_originator_id ]
[ , [ @p2p_continue_onconflict = ] N'p2p_continue_onconflict' ]
[ , [ @allow_partition_switch = ] N'allow_partition_switch' ]
[ , [ @replicate_partition_switch = ] N'replicate_partition_switch' ]
[ , [ @allow_drop = ] N'allow_drop' ]
[ , [ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy' ]
[ ; ]
Argumente
[ @publication = ] N'Publikation'
Der Name der zu erstellenden Publikation. @publication ist "sysname" ohne Standard. Dieser Name muss innerhalb der Datenbank eindeutig sein.
[ @taskid = ] taskid
Wird nur aus Gründen der Abwärtskompatibilität unterstützt; verwenden Sie sp_addpublication_snapshot (Transact-SQL).
[ @restricted = ] N'restricted'
Wird nur aus Gründen der Abwärtskompatibilität unterstützt; verwenden default_access
.
[ @sync_method = ] N'sync_method'
Der Synchronisierungsmodus. @sync_method ist nvarchar(40) und kann einen der folgenden Werte aufweisen.
Wert | Beschreibung |
---|---|
native 1 |
Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus. |
character |
Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus. Hinweis: Bei einem Oracle Publisher character ist nur für die Snapshotreplikation gültig. |
concurrent 1 |
Erzeugt die Ausgabe des Massenkopieprogramms aller Tabellen, sperrt jedoch keine Tabellen während der Momentaufnahme. Wird nur für Transaktionsveröffentlichungen unterstützt. |
concurrent_c |
Erzeugt die Ausgabe des Massenkopieprogramms aller Tabellen, sperrt jedoch keine Tabellen während der Momentaufnahme. Wird nur für Transaktionsveröffentlichungen unterstützt. |
database snapshot |
Erstellt aus einer Datenbankmomentaufnahme eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus. Datenbankmomentaufnahmen sind in jeder Edition von SQL Server nicht verfügbar. Eine Liste der features, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Editionen und unterstützte Features von SQL Server 2022. |
database snapshot character |
Erstellt aus einer Datenbankmomentaufnahme eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus. Datenbankmomentaufnahmen sind in jeder Edition von SQL Server nicht verfügbar. Eine Liste der features, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Editionen und unterstützte Features von SQL Server 2022. |
NULL (Standard) |
Standardwert für native SQL Server-Herausgeber. Bei Nicht-SQL Server-Herausgebern wird character standardmäßig festgelegt, wann der Wert von @repl_freq ist Snapshot und für alle anderen Fälle concurrent_c . |
1 Für Oracle-Herausgeber nicht unterstützt.
[ @repl_freq = ] N'repl_freq'
Der Typ der Replikationshäufigkeit, @repl_freq nvarchar(10) ist und einer der folgenden Werte sein kann.
Wert | Beschreibung |
---|---|
continuous (Standardwert) |
Der Protokollleser-Agent wird kontinuierlich ausgeführt. Für Nicht-SQL Server-Herausgeber ist dies erforderlich, dass @sync_method auf .concurrent_c |
snapshot |
Der Protokolllese-Agent wird nach einem Zeitplan ausgeführt. Für Nicht-SQL Server-Herausgeber ist dies erforderlich, dass @sync_method auf .character |
[ @description = ] N'description'
Eine optionale Beschreibung für die Publikation. @description ist nvarchar(255), mit einem Standardwert von NULL
.
[ @status = ] N'status'
Gibt an, ob Veröffentlichungsdaten verfügbar sind. @status ist nvarchar(8) und kann einen der folgenden Werte aufweisen.
Wert | Beschreibung |
---|---|
active |
Die Veröffentlichungsdaten sind für Abonnenten sofort verfügbar. |
inactive (Standard) |
Publikationsdaten sind für Abonnenten nicht verfügbar, wenn die Publikation zum ersten Mal erstellt wird (sie können abonnieren, aber die Abonnements werden nicht verarbeitet). |
Wird für Oracle-Herausgeber nicht unterstützt.
[ @independent_agent = ] N'independent_agent'
Gibt an, ob für diese Publikation ein eigenständiges Verteilungs-Agent vorhanden ist. @independent_agent ist nvarchar(5), mit einem Standardwert von false
.
- Wenn
true
, gibt es eine eigenständige Verteilungs-Agent für diese Publikation. - Wenn
false
die Publikation eine freigegebene Verteilungs-Agent verwendet, und jedes Publisher-Datenbank-/Abonnentendatenbankpaar verfügt über einen einzigen, freigegebenen Agent.
[ @immediate_sync = ] N'immediate_sync'
Gibt an, ob die Synchronisierungsdateien für die Veröffentlichung bei jeder Ausführung des Momentaufnahme-Agents neu erstellt werden. @immediate_sync ist nvarchar(5), mit einem Standardwert von false
.
Wenn true
die Synchronisierungsdateien bei jeder Ausführung des Momentaufnahmen-Agent erstellt oder neu erstellt werden. Abonnenten können die Synchronisierungsdateien sofort abrufen, wenn der Momentaufnahme-Agent vor dem Erstellen des Abonnements abgeschlossen wurde. Neue Abonnements rufen die neuesten Synchronisierungsdateien ab, die von der letzten Ausführung des Momentaufnahmeagents generiert wurden. @independent_agent muss @immediate_sync true
sein.true
Wenn false
die Synchronisierungsdateien nur erstellt werden, wenn neue Abonnements vorhanden sind. Sie müssen sp_addsubscription für jedes Abonnement aufrufen, wenn Sie einer vorhandenen Publikation inkrementell einen neuen Artikel hinzufügen. Abonnenten können die Synchronisierungsdateien nach dem Abonnement erst empfangen, wenn die Momentaufnahmen-Agent gestartet und abgeschlossen sind.
[ @enabled_for_internet = ] N'enabled_for_internet'
Gibt an, ob die Veröffentlichung für das Internet aktiviert ist, und bestimmt, ob die Momentaufnahmedateien per FTP (File Transfer Protocol) an einen Abonnenten übertragen werden können. @enabled_for_internet ist nvarchar(5) mit einem Standardwert von false
. Wenn true
die Synchronisierungsdateien für die Publikation in das C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp
Verzeichnis eingefügt werden. Der Benutzer muss das Ftp
Verzeichnis erstellen.
[ @allow_push = ] N'allow_push'
Gibt an, ob für die angegebene Veröffentlichung Pushabonnements erstellt werden können. @allow_push ist nvarchar(5) mit einem Standardwert von true
, der Pushabonnements für die Publikation zulässt.
[ @allow_pull = ] N'allow_pull'
Gibt an, ob für die angegebene Veröffentlichung Pullabonnements erstellt werden können. @allow_pull ist nvarchar(5), mit einem Standardwert von false
. Wenn false
, Pullabonnements für die Publikation nicht zulässig sind.
[ @allow_anonymous = ] N'allow_anonymous'
Gibt an, ob für die angegebene Veröffentlichung anonyme Abonnements erstellt werden können. @allow_anonymous ist nvarchar(5), mit einem Standardwert von false
. Wenn true
, muss @immediate_sync auch auf true
. Wenn false
anonyme Abonnements für die Publikation nicht zulässig sind.
[ @allow_sync_tran = ] N'allow_sync_tran'
Gibt an, ob Abonnements mit sofortigem Update für die Veröffentlichung zulässig sind. @allow_sync_tran ist nvarchar(5), mit einem Standardwert von false
. true
wird für Oracle-Herausgeber nicht unterstützt.
[ @autogen_sync_procs = ] N'autogen_sync_procs'
Gibt an, ob die synchronisierende gespeicherte Prozedur für Abonnements mit Update beim Verleger generiert wird. @autogen_sync_procs ist nvarchar(5) und kann einen der folgenden Werte aufweisen.
Wert | Beschreibung |
---|---|
true |
Wird automatisch festgelegt, wenn das Aktualisieren von Abonnements aktiviert ist. |
false |
Wird automatisch festgelegt, wenn das Aktualisieren von Abonnements nicht aktiviert ist oder für Oracle-Herausgeber. |
NULL (Standard) |
Standardwerte true sind, wenn das Aktualisieren von Abonnements aktiviert ist und false wenn das Aktualisieren von Abonnements nicht aktiviert ist. |
Hinweis
Der für @autogen_sync_procsangegebene Wert wird abhängig von den für @allow_queued_tran und @allow_sync_tran angegebenen Werten überschrieben.
[ @retention = ] Aufbewahrung
Der Aufbewahrungszeitraum in Stunden für Abonnementaktivitäten. @retention ist int, mit einem Standardwert von 336
. Wenn ein Abonnement nicht innerhalb des Aufbewahrungszeitraums aktiv ist, läuft es ab und wird entfernt. Der Wert kann größer als die maximale Beibehaltungsdauer der vom Verleger verwendeten Verteilungsdatenbank sein. Wenn 0
bekannte Abonnements für die Publikation niemals ablaufen und vom Agent für abgelaufene Abonnementbereinigungen entfernt werden.
[ @allow_queued_tran = ] N'allow_queued_tran'
Aktiviert oder deaktiviert das Hinzufügen von Änderungen beim Abonnenten zu Warteschlangen, bis sie beim Verleger angewendet werden können. @allow_queued_tran ist nvarchar(5), mit einem Standardwert von false
.
- Wenn
false
änderungen am Abonnenten nicht in die Warteschlange gestellt werden. true
wird für Oracle-Herausgeber nicht unterstützt.
[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'
Gibt an, ob Momentaufnahmedateien im Standardordner gespeichert werden. @snapshot_in_defaultfolder ist nvarchar(5) mit einem Standardwert von true
.
- Wenn
true
, Snapshot-Dateien im Standardordner gefunden werden. - If
false
, snapshot files have been stored in the alternate location specified by @alt_snapshot_folder.
Alternative Speicherorte können sich auf einem anderen Server, auf einem Netzlaufwerk oder auf Wechselmedien befinden (z. B. auf CD-ROM oder auf einem Wechseldatenträger). Momentaufnahmedateien können auch auf einer FTP-Site gespeichert werden, um zu einem späteren Zeitpunkt vom Abonnenten abgerufen zu werden. Dieser Parameter kann "true" sein und dennoch eine Position im @alt_snapshot_folder-Parameter aufweisen. Diese Kombination gibt an, dass die Momentaufnahmedateien sowohl im Standardpfad als auch im alternativen Pfad gespeichert werden.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Gibt den Speicherort des anderen Ordners für die Momentaufnahme an. @alt_snapshot_folder ist nvarchar(255), mit einem Standardwert von NULL
.
[ @pre_snapshot_script = ] N'pre_snapshot_script'
Gibt einen Zeiger auf einen .sql Dateispeicherort an. @pre_snapshot_script ist nvarchar(255), mit einem Standardwert von NULL
. Der Verteilungs-Agent führt das vor der Momentaufnahme ausgeführte Skript vor allen Skripts für replizierte Objekte aus, wenn die Momentaufnahme bei einem Abonnenten angewendet wird. Das Skript wird beim Herstellen der Verbindung mit der Abonnementdatenbank in dem vom Verteilungs-Agent verwendeten Sicherheitskontext ausgeführt.
[ @post_snapshot_script = ] N'post_snapshot_script'
Gibt einen Zeiger auf einen .sql
Dateispeicherort an. @post_snapshot_script ist nvarchar(255), wobei die Standardeinstellung istNULL
. Der Verteilungs-Agent führt das nach der Momentaufnahme ausgeführte Skript aus, nachdem alle anderen Skripts für replizierte Objekte und Daten während der Erstsynchronisierung angewendet wurden. Das Skript wird beim Herstellen der Verbindung mit der Abonnementdatenbank in dem vom Verteilungs-Agent verwendeten Sicherheitskontext ausgeführt.
[ @compress_snapshot = ] N'compress_snapshot'
Gibt an, dass die Momentaufnahme, die in den @alt_snapshot_folder Speicherort geschrieben wird, in das Microsoft CAB-Format komprimiert werden soll. @compress_snapshot ist nvarchar(5), mit einem Standardwert von false
.
false
Gibt an, dass die Momentaufnahme nicht komprimiert wird.true
Gibt an, dass die Momentaufnahme komprimiert wird.
Momentaufnahmendateien, die größer als 2 GB sind, können nicht komprimiert werden. Komprimierte Momentaufnahmedateien werden an dem Speicherort dekomprimiert, an dem der Verteilungs-Agent ausgeführt wird. Pullabonnements werden normalerweise mit komprimierten Momentaufnahmen verwendet, sodass die Dateien auf dem Abonnenten dekomprimiert werden. Die Momentaufnahme im Standardordner kann nicht komprimiert werden.
[ @ftp_address = ] N'ftp_address'
Die Netzwerkadresse des FTP-Diensts für den Distributor. @ftp_address ist "sysname" mit dem Standardwert "NULL
. Gibt an, wo die Veröffentlichungsmomentaufnahmedateien für den Verteilungs-Agent oder Merge-Agent eines Abonnenten zum Abholen gespeichert sind. Da diese Eigenschaft für jede Publikation gespeichert wird, kann jede Publikation über eine andere @ftp_address verfügen. Die Veröffentlichung muss die Weitergabe von Momentaufnahmen über FTP unterstützen.
[ @ftp_port = ] ftp_port
Die Portnummer des FTP-Diensts für den Distributor. @ftp_port ist int mit einem Standardwert von 21
. Gibt an, wo sich die Publikationsmomentaufnahmendateien für die Verteilungs-Agent oder Merge-Agent eines Abonnenten befinden, der aufgenommen werden soll. Da diese Eigenschaft für jede Publikation gespeichert ist, kann jede Publikation über eine eigene @ftp_port verfügen.
[ @ftp_subdirectory = ] N'ftp_subdirectory'
Gibt an, wo die Momentaufnahmedateien für die Verteilungs-Agent oder Merge-Agent des Abonnenten verfügbar sind, um aufzunehmen, wenn die Publikation das Verteilen von Momentaufnahmen mithilfe von FTP unterstützt. @ftp_subdirectory ist "nvarchar(255)" mit einem Standardwert von NULL
. Da diese Eigenschaft für jede Publikation gespeichert wird, kann jede Publikation über ein eigenes @ftp_subdirctory verfügen oder kein Unterverzeichnis haben, das mit einem NULL
Wert angegeben ist.
[ @ftp_login = ] N'ftp_login'
Der Benutzername, der zum Herstellen einer Verbindung mit dem FTP-Dienst verwendet wird. @ftp_login ist "sysname" mit dem Standardwert "anonymous
.
[ @ftp_password = ] N'ftp_password'
Das Zum Herstellen einer Verbindung mit dem FTP-Dienst verwendete Benutzerkennwort. @ftp_password ist "sysname" mit der Standardeinstellung "NULL
.
[ @allow_dts = ] N'allow_dts'
Gibt an, dass die Veröffentlichung Datentransformationen zulässt. Beim Erstellen eines Abonnements können Sie ein DTS-Paket angeben. @allow_dts ist nvarchar(5) mit einem Standardwert von false
, der DTS-Transformationen nicht zulässt. Wenn @allow_dts "true" ist, muss @sync_method entweder character
oder concurrent_c
auf .
true
wird für Oracle-Herausgeber nicht unterstützt.
[ @allow_subscription_copy = ] N'allow_subscription_copy'
Aktiviert oder deaktiviert die Option zum Kopieren der Abonnementdatenbanken, die diese Veröffentlichung abonniert haben. @allow_subscription_copy ist nvarchar(5), mit einem Standardwert von false
.
[ @conflict_policy = ] N'conflict_policy'
Gibt die Richtlinie zur Konfliktlösung an, die für die Option zur verzögerten Aktualisierung über eine Warteschlange verwendet wird. @conflict_policy ist nvarchar(100) und kann einen der folgenden Werte aufweisen.
Wert | Beschreibung |
---|---|
pub wins |
Der Verleger gewinnt den Konflikt. |
sub reinit |
Erneutes Initialisieren des Abonnements. |
sub wins |
Der Abonnent gewinnt den Konflikt. |
NULL (Standard) |
Wenn NULL es sich bei der Publikation um eine Momentaufnahmeveröffentlichung handelt, wird sub reinit die Standardrichtlinie . Wenn NULL und die Publikation keine Snapshot-Publikation ist, wird pub wins die Standardeinstellung . |
Wird für Oracle-Herausgeber nicht unterstützt.
[ @centralized_conflicts = ] N'centralized_conflicts'
Gibt an, ob Konfliktdatensätze auf dem Verleger gespeichert werden. @centralized_conflicts ist nvarchar(5) mit einem Standardwert von NULL
.
- Wenn
true
, Konfliktdatensätze werden im Publisher gespeichert. - Wenn
false
, Konfliktdatensätze sowohl beim Herausgeber als auch beim Abonnent gespeichert werden, der den Konflikt verursacht hat.
Wird für Oracle-Herausgeber nicht unterstützt.
[ @conflict_retention = ] conflict_retention
Gibt die Konfliktaufbewahrungsdauer in Tagen an. Der Zeitraum, in dem Konfliktmetadaten für Peer-zu-Peer-Transaktionsreplikation und Abonnements mit verzögertem Update gespeichert werden. @conflict_retention ist int mit einem Standardwert von 14
.
Wird für Oracle-Herausgeber nicht unterstützt.
[ @queue_type = ] N'queue_type'
Gibt an, welcher Wartenschlangentyp verwendet wird. @queue_type ist nvarchar(10) und kann einer dieser Werte sein.
Wert | Beschreibung |
---|---|
sql |
Verwenden Sie SQL Server, um Transaktionen zu speichern. |
NULL (Standard) |
Standardwert ist sql , der angibt, dass SQL Server zum Speichern von Transaktionen verwendet wird. |
Hinweis
Der Support für die Verwendung von Microsoft Message Queuing wird nicht mehr unterstützt. Wenn Sie einen Wert angeben, wird msmq
eine Warnung angezeigt, und die Replikation legt den Wert automatisch auf sql
.
Wird für Oracle-Herausgeber nicht unterstützt.
[ @add_to_active_directory = ] N'add_to_active_directory'
Dieser Parameter ist veraltet und wird nur für die Abwärtskompatibilität von Skripts unterstützt. Sie können dem Microsoft Active Directory keine Publikationsinformationen mehr hinzufügen.
[ @logreader_job_name = ] N'logreader_job_name'
Der Name eines vorhandenen Agentenauftrags. @logreader_job_name ist "sysname" mit der Standardeinstellung "NULL
. Dieser Parameter wird nur angegeben, wenn der Protokollleser-Agent einen vorhandenen Auftrag anstelle eines neuen Auftrags verwendet, der erstellt wird.
[ @qreader_job_name = ] N'qreader_job_name'
Der Name eines vorhandenen Agentenauftrags. @qreader_job_name ist "sysname" mit einem Standardwert von NULL
. Dieser Parameter wird nur angegeben, wenn der Warteschlangenleser-Agent einen vorhandenen Auftrag anstelle eines neuen Auftrags verwendet, der erstellt wird.
[ @publisher = ] N'publisher'
Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL
.
@publisher sollten beim Hinzufügen einer Publikation zu einem SQL Server-Herausgeber nicht verwendet werden.
[ @allow_initialize_from_backup = ] N'allow_initialize_from_backup'
Gibt an, ob Abonnenten ein Abonnement für diese Veröffentlichung über eine Sicherung anstelle einer Anfangsmomentaufnahme initialisieren können. @allow_initialize_from_backup ist nvarchar(5) und kann einen der folgenden Werte aufweisen:
Wert | Beschreibung |
---|---|
true |
Aktiviert die Initialisierung aus einer Sicherung. |
false |
Deaktiviert die Initialisierung aus einer Sicherung. |
NULL (Standard) |
Standardeinstellung true für eine Publikation in einer Peer-to-Peer-Replikationstopologie und false für alle anderen Publikationen. |
Weitere Informationen finden Sie unter Initialize a Transactional Subscription Without a Snapshotinitialisiert wird.
Warnung
Um fehlende Abonnentendaten zu vermeiden, verwenden Sie bei Verwendung sp_addpublication
mit @allow_initialize_from_backup = N'true'
, immer .@immediate_sync = N'true'
[ @replicate_ddl = ] replicate_ddl
Gibt an, ob die Schemareplikation für die Publikation unterstützt wird. @replicate_ddl ist int, mit einem Standardwert 1
für SQL Server-Herausgeber und 0
für Nicht-SQL Server-Herausgeber.
1
gibt an, dass DDL-Anweisungen (Data Definition Language), die am Herausgeber ausgeführt werden, repliziert werden.0
gibt an, dass DDL-Anweisungen nicht repliziert werden.
Die Schemareplikation wird für Oracle-Herausgeber nicht unterstützt.
Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.
Der @replicate_ddl-Parameter wird berücksichtigt, wenn eine DDL-Anweisung eine Spalte hinzufügt. Der parameter @replicate_ddl wird ignoriert, wenn eine DDL-Anweisung aus den folgenden Gründen eine Spalte ändert oder abbricht.
Wenn eine Spalte verworfen wird, müssen Sie aktualisiert werden, um zu verhindern,
sysarticlecolumns
dass neue DML-Anweisungen die verworfene Spalte einschließen, was dazu führen würde, dass der Verteilungs-Agent fehlschlägt. Der parameter @replicate_ddl wird ignoriert, da die Replikation immer die Schemaänderung replizieren muss.Wenn eine Spalte geändert wird, hat sich möglicherweise der Quelldatentyp oder die Nullierbarkeit geändert, wodurch DML-Anweisungen einen Wert enthalten, der möglicherweise nicht mit der Tabelle am Abonnenten kompatibel ist. Solche DML-Anweisungen können bewirken, dass der Verteilungs-Agent fehlschlägt. Der parameter @replicate_ddl wird ignoriert, da die Replikation immer die Schemaänderung replizieren muss.
Wenn eine DDL-Anweisung eine neue Spalte hinzufügt,
sysarticlecolumns
wird die neue Spalte nicht eingeschlossen. DML-Anweisungen versuchen nicht, Daten für die neue Spalte zu replizieren. Der Parameter wird berücksichtigt, da sowohl das Replizieren als auch das Nicht-Replizieren der DDL akzeptabel ist.
[ @enabled_for_p2p = ] N'enabled_for_p2p'
Ermöglicht die Verwendung der Veröffentlichung in einer Peer-zu-Peer-Replikationstopologie. @enabled_for_p2p ist "nvarchar(5)" mit der Standardeinstellung "false
. true
gibt an, dass die Publikation peer-to-Peer-Replikation unterstützt. Wenn Sie @enabled_for_p2p true
festlegen, gelten die folgenden Einschränkungen:
- @allow_anonymous muss sein
false
. - @allow_dts muss sein
false
. - @allow_initialize_from_backup muss sein
true
. - @allow_queued_tran muss sein
false
. - @allow_sync_tran muss sein
false
. - @conflict_policy muss sein
false
. - @independent_agent muss sein
true
. - @repl_freq muss sein
continuous
. - @replicate_ddl muss sein
1
.
Weitere Informationen finden Sie unter Peer-to-Peer - Transaktionsreplikation.
[ @publish_local_changes_only = ] N'publish_local_changes_only'
Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
[ @enabled_for_het_sub = ] N'enabled_for_het_sub'
Ermöglicht der Publikation die Unterstützung von Nicht-SQL Server-Abonnenten. @enabled_for_het_sub ist nvarchar(5), mit einem Standardwert von false
. Ein Wert von true
bedeutet, dass die Publikation Nicht-SQL Server-Abonnenten unterstützt. Wenn @enabled_for_het_sub ist true
, gelten die folgenden Einschränkungen:
- @allow_initialize_from_backup muss sein
false
. - @allow_push muss sein
true
. - @allow_queued_tran muss sein
false
. - @allow_subscription_copy muss sein
false
. - @allow_sync_tran muss sein
false
. - @autogen_sync_procs muss sein
false
. - @conflict_policy muss sein
NULL
. - @enabled_for_internet muss sein
false
. - @enabled_for_p2p muss sein
false
. - @ftp_address muss sein
NULL
. - @ftp_subdirectory muss sein
NULL
. - @ftp_password muss sein
NULL
. - @pre_snapshot_script muss sein
NULL
. - @post_snapshot_script muss sein
NULL
. - @replicate_ddl muss 0 sein.
- @qreader_job_name muss sein
NULL
. - @queue_type muss sein
NULL
. - @sync_method kann nicht sein
native
oderconcurrent
.
Weitere Informationen finden Sie unter Non-SQL Server Subscribers.
[ @p2p_conflictdetection = ] N'p2p_conflictdetection'
Ermöglicht die Erkennung von Konflikten durch den Verteilungs-Agent, wenn die Veröffentlichung für die Peer-zu-Peer-Replikation aktiviert ist. @p2p_conflictdetection ist "nvarchar(5)", wobei der Standardwert "false
. Weitere Informationen finden Sie unter Peer-to-Peer - Konflikterkennung in peer-to-Peer-Replikation.
[ @p2p_originator_id = ] p2p_originator_id
Gibt eine ID für einen Knoten in einer Peer-zu-Peer-Topologie an. @p2p_originator_id ist int, mit einem Standardwert von NULL
. Diese ID wird für die Konflikterkennung verwendet, wenn @p2p_conflictdetection auf TRUE festgelegt ist. Geben Sie eine positive, nichtzero-ID an, die in der Topologie nicht verwendet wurde. Führen Sie für eine Liste der verwendeten IDs sp_help_peerconflictdetection aus.
[ @p2p_continue_onconflict = ] N'p2p_continue_onconflict'
Legt fest, ob der Verteilungs-Agent nach Erkennung eines Konflikts die Verarbeitung von Änderungen fortsetzt. @p2p_continue_onconflict ist nvarchar(5), mit einem Standardwert von false
.
Achtung
Es wird empfohlen, den Standardwert von false
. Wenn diese Option auf true
festgelegt ist, versucht die Verteilungs-Agent, Daten in der Topologie zu konvergenieren, indem die konfliktierende Zeile vom Knoten angewendet wird, der die höchste Absender-ID ist. Diese Methode garantiert keine Konvergenz. Sie sollten sicherstellen, dass die Topologie nach der Erkennung eines Konflikts konsistent ist. Weitere Informationen finden Sie unter "Handling Conflicts" in Peer-to-Peer – Conflict Detection in Peer-to-Peer-Replikation.
[ @allow_partition_switch = ] N'allow_partition_switch'
Gibt an, ob ALTER TABLE...SWITCH
Anweisungen für die veröffentlichte Datenbank ausgeführt werden können. @allow_partition_switch ist nvarchar(5) mit einem Standardwert von false
. Weitere Informationen finden Sie unter Replicate Partitioned Tables and Indexes.
[ @replicate_partition_switch = ] N'replicate_partition_switch'
Gibt an, ob ALTER TABLE...SWITCH
Anweisungen, die für die veröffentlichte Datenbank ausgeführt werden, in Abonnenten repliziert werden sollen. @replicate_partition_switch ist nvarchar(5), mit einem Standardwert von NULL
. Diese Option ist nur gültig, wenn @allow_partition_switch auf TRUE festgelegt ist.
[ @allow_drop = ] N'allow_drop'
Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'
Gilt für: SQL Server 2019 (15.x) CU 13 und höher.
@p2p_conflictdetection_policy ist nvarchar(12) und kann einer der folgenden Werte sein:
Wert | Beschreibung |
---|---|
originatorid (Standard) |
Der Verteiler-Agent erkennt den Konflikt und entscheidet den Gewinner basierend auf der Absender-ID, wenn p2p_continue_onconflict = N'true' . Andernfalls wird eine Fehlermeldung ausgegeben. |
lastwriter |
Der Verteilungs-Agent erkennt den Konflikt und entscheidet den Gewinner basierend auf der Datumsangabe des letzten Autors, wenn p2p_continue_onconflict = N'true' . Andernfalls wird eine Fehlermeldung ausgegeben. |
Hinweis
Wenn Sie angeben originatorid
, ist die Konflikterkennung identisch mit SQL Server 2019 (15.x) CU 12 und früheren Versionen. Wenn Sie angeben lastwriter
, ermöglicht SQL Server die automatische Auflösung von Konflikten basierend auf dem letzten Schreibvorgang.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
sp_addpublication
wird in der Momentaufnahmereplikation und Transaktionsreplikation verwendet.
Wenn mehrere Publikationen vorhanden sind, die dasselbe Datenbankobjekt veröffentlichen, werden nur Publikationen mit einem @replicate_ddl Wert von 1
Replikaten ALTER TABLE
, , ALTER VIEW
, , ALTER PROCEDURE
ALTER FUNCTION
und ALTER TRIGGER
DDL-Anweisungen veröffentlicht. Eine DDL-Anweisung wird jedoch von allen Publikationen repliziert, ALTER TABLE DROP COLUMN
die die verworfene Spalte veröffentlichen.
Wenn die DDL-Replikation für eine Publikation aktiviert (@replicate_ddl1
= ) aktiviert ist, müssen sp_changepublication zuerst ausgeführt werden, um DDL-Änderungen an der Publikation nicht zu repli @replicate_ddl 0
zieren. Nachdem die nicht replizierten DDL-Anweisungen ausgegeben wurden, kann sp_changepublication erneut ausgeführt werden, um die DDL-Replikation wieder zu aktivieren.
Beispiele
-- To avoid storing the login and password in the script file, the values
-- are passed into SQLCMD as scripting variables. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksProductTran';
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login);
-- This should be passed at runtime.
SET @password = $(Password);
-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- Execute sp_addlogreader_agent to create the agent job.
EXEC sp_addlogreader_agent
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Create a new transactional publication with the required properties.
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_push = N'true',
@allow_pull = N'true',
@independent_agent = N'true';
-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
GO
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addpublication
. Für Anmeldungen unter Verwendung der Windows-Authentifizierung muss in der Datenbank ein Konto vorhanden sein, das das zugehörige Windows-Benutzerkonto darstellt. Ein Benutzerkonto, das eine Windows-Gruppe darstellt, reicht nicht aus.
Zugehöriger Inhalt
- sp_addlogreader_agent (Transact-SQL)
- sp_addpublication_snapshot (Transact-SQL)
- sp_changepublication (Transact-SQL)
- sp_droppublication (Transact-SQL)
- sp_helppublication (Transact-SQL)
- sp_replicationdboption (Transact-SQL)
- Veröffentlichen von Daten und Datenbankobjekten
- Gespeicherte Replikationsprozeduren (Transact-SQL)