sp_addpublication (Transact-SQL)

Gilt für:SQL ServerAzure 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_Momentaufnahme (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 des Dataflows
native1 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 Momentaufnahme Replikation gültig.
concurrent1 Erzeugt die Ausgabe des Massenkopieprogramms im nativen Modus 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. Datenbank-Momentaufnahme 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. Datenbank-Momentaufnahme 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 falsedie 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 truedie 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_synctruesein.true Wenn falsedie 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 truedie 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 falseanonyme 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 0bekannte 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'Momentaufnahme_in_defaultfolder'

Gibt an, ob Momentaufnahmedateien im Standardordner gespeichert werden. @Momentaufnahme_in_defaultfolder ist nvarchar(5) mit einem Standardwert von true.

  • Wenn true, Momentaufnahme Dateien im Standardordner gefunden werden können.
  • Wenn falseMomentaufnahme Dateien am alternativen Speicherort gespeichert wurden, der durch @alt_Momentaufnahme_folder angegeben wurde.

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_Momentaufnahme_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_Momentaufnahme_folder'

Gibt den Speicherort des anderen Ordners für die Momentaufnahme an. @alt_Momentaufnahme_folder ist nvarchar(255), mit einem Standardwert von NULL.

[ @pre_snapshot_script = ] N'pre_Momentaufnahme_script'

Gibt einen Zeiger auf einen .sql Dateispeicherort an. @pre_Momentaufnahme_script ist nvarchar(255), wobei die Standardeinstellung istNULL. 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_Momentaufnahme_script'

Gibt einen Zeiger auf einen .sql Dateispeicherort an. @post_Momentaufnahme_script ist "nvarchar(255)" mit der Standardeinstellung "NULL. 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_Momentaufnahme'

Gibt an, dass die Momentaufnahme, die in den @alt_Momentaufnahme_folder Speicherort geschrieben wird, in das Microsoft CAB-Format komprimiert werden soll. @compress_Momentaufnahme ist nvarchar(5), mit einem Standardwert von false.

  • falseGibt an, dass die Momentaufnahme nicht komprimiert werden.
  • trueGibt an, dass die Momentaufnahme komprimiert werden.

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 Publikation Momentaufnahme Dateien für die Verteilungs-Agent oder Merge-Agent eines Abonnents befindet. 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 Momentaufnahme Dateien für die Verteilungs-Agent oder Merge-Agent des Abonnents verfügbar sind, wenn die Publikation das Verteilen von Momentaufnahme 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_cauf .

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 NULLdie Publikation eine Momentaufnahme Publikation ist, wird sub reinitdie Standardrichtlinie . Wenn NULL und die Publikation keine Momentaufnahme Publikation ist, wird pub winsdie 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_p2ptruefestlegen, gelten die folgenden Einschränkungen:

  • @allow_anonymous muss seinfalse.
  • @allow_dts muss seinfalse.
  • @allow_initialize_from_backup muss seintrue.
  • @allow_queued_tran muss seinfalse.
  • @allow_sync_tran muss seinfalse.
  • @conflict_policy muss seinfalse.
  • @independent_agent muss seintrue.
  • @repl_freq muss seincontinuous.
  • @replicate_ddl muss sein1.

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 seinfalse.
  • @allow_push muss seintrue.
  • @allow_queued_tran muss seinfalse.
  • @allow_subscription_copy muss seinfalse.
  • @allow_sync_tran muss seinfalse.
  • @autogen_sync_procs muss seinfalse.
  • @conflict_policy muss seinNULL.
  • @enabled_for_internet muss seinfalse.
  • @enabled_for_p2p muss seinfalse.
  • @ftp_address muss seinNULL.
  • @ftp_subdirectory muss seinNULL.
  • @ftp_password muss seinNULL.
  • @pre_Momentaufnahme_script muss seinNULL.
  • @post_Momentaufnahme_script muss seinNULL.
  • @replicate_ddl muss 0 sein.
  • @qreader_job_name muss seinNULL.
  • @queue_type muss seinNULL.
  • @sync_method kann nicht sein native oder concurrent.

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 (Erfolg) oder 1 (Fehler).

Hinweise

sp_addpublicationwird in Momentaufnahme Replikation 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 PROCEDUREALTER FUNCTIONund 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.