sp_addpublication (Transact-SQL)
Erstellt eine Momentaufnahme- oder Transaktionsveröffentlichung. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addpublication [ @publication = ] 'publication'
[ , [ @taskid = ] tasked ]
[ , [ @restricted = ] 'restricted' ]
[ , [ @sync_method = ] 'sync_method' ]
[ , [ @repl_freq = ] 'repl_freq' ]
[ , [ @description = ] 'description' ]
[ , [ @status = ] 'status' ]
[ , [ @independent_agent = ] 'independent_agent' ]
[ , [ @immediate_sync = ] 'immediate_sync' ]
[ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
[ , [ @allow_push = ] 'allow_push'
[ , [ @allow_pull = ] 'allow_pull' ]
[ , [ @allow_anonymous = ] 'allow_anonymous' ]
[ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
[ , [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder' ]
[ , [ @alt_snapshot_folder= ] 'alternate_snapshot_folder' ]
[ , [ @pre_snapshot_script= ] 'pre_snapshot_script' ]
[ , [ @post_snapshot_script= ] 'post_snapshot_script' ]
[ , [ @compress_snapshot= ] 'compress_snapshot' ]
[ , [ @ftp_address = ] 'ftp_address' ]
[ , [ @ftp_port= ] ftp_port ]
[ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
[ , [ @ftp_login = ] 'ftp_login' ]
[ , [ @ftp_password = ] 'ftp_password' ]
[ , [ @allow_dts = ] 'allow_dts' ]
[ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
[ , [ @conflict_policy = ] 'conflict_policy' ]
[ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] 'queue_type' ]
[ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
[ , [ @logreader_job_name = ] 'logreader_agent_name' ]
[ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
[ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
[ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
[ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
[ , [ @p2p_originator_id = ] p2p_originator_id
[ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
[ , [ @allow_partition_switch = ] 'allow_partition_switch'
[ , [ @replicate_partition_switch = ]'replicate_partition_switch'
Argumente
[ @publication=] 'publication'
Der Name der Veröffentlichung, die erstellt werden soll. publication ist vom Datentyp sysname und hat keinen Standardwert. 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=] 'restricted'
Wird nur aus Gründen der Abwärtskompatibilität unterstützt; verwenden Sie default_access.[ @sync_method=] 'sync_method**'**
Der Synchronisierungsmodus. sync_method ist vom Datentyp nvarchar(13). Die folgenden Werte sind möglich:Wert
Beschreibung
native
Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus. Wird nicht für Oracle-Verleger unterstützt.
character
Erstellt eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus. Für einen Oracle-Verleger ist character nur für die Momentaufnahmereplikation gültig.
concurrent
Erzeugt eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus, sperrt jedoch die Tabellen während der Erstellung der Momentaufnahme nicht. Wird nur für Transaktionsveröffentlichungen unterstützt. Wird nicht für Oracle-Verleger unterstützt.
concurrent_c
Erzeugt eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus, sperrt jedoch die Tabellen während der Erstellung der Momentaufnahme nicht. Wird nur für Transaktionsveröffentlichungen unterstützt.
database snapshot
Erstellt aus einer Datenbankmomentaufnahme eine Massenkopierprogramm-Ausgabe aller Tabellen im einheitlichen Modus. Datenbankmomentaufnahmen sind nicht in jeder Edition von Microsoft SQL Server vorhanden. Eine Liste der Funktionen, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Von den SQL Server 2012-Editionen unterstützte Funktionen.
database snapshot character
Erstellt aus einer Datenbankmomentaufnahme eine Massenkopierprogramm-Ausgabe aller Tabellen im Zeichenmodus. Datenbankmomentaufnahmen sind nicht in jeder Edition von Microsoft SQL Server vorhanden. Eine Liste der Funktionen, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Von den SQL Server 2012-Editionen unterstützte Funktionen.
NULL (Standard)
Ist für Microsoft SQL Server-Verleger standardmäßig gleichbedeutend mit native. Ist für Nicht-SQL Server-Verleger standardmäßig gleichbedeutend mit character, wenn repl_freq den Wert Momentaufnahme hat, und ist in allen anderen Fällen standardmäßig gleichbedeutend mit concurrent_c.
[ @repl_freq=] 'repl_freq'
Der Typ der Replikationshäufigkeit. repl_freq ist vom Datentyp nvarchar(10) und kann einen der folgenden Werte annehmen.Wert
Beschreibung
continuous (Standard)
Der Verleger stellt die Ausgabe aller protokollbasierten Transaktionen bereit. Für Nicht-SQL Server-Verleger muss hierfür sync_method auf concurrent_c festgelegt werden.
snapshot
Der Verleger gibt nur geplante Synchronisierungsereignisse aus. Für Nicht-SQL Server-Verleger muss hierfür sync_method auf character festgelegt werden.
[ @description=] 'description'
Eine optionale Beschreibung für die Veröffentlichung. description ist vom Datentyp nvarchar(255) und hat den Standardwert NULL.[ @status=] 'status'
Gibt an, ob Veröffentlichungsdaten verfügbar sind. status ist vom Datentyp nvarchar(8). Die folgenden Werte sind möglich:Wert
Beschreibung
active
Die Veröffentlichungsdaten sind für Abonnenten sofort verfügbar.
inactive (Standard)
Die Veröffentlichungsdaten sind für Abonnenten zunächst nicht verfügbar, wenn die Veröffentlichung erstellt wird (die Abonnierung ist möglich, aber die Abonnements werden nicht verarbeitet).
Wird nicht für Oracle-Verleger unterstützt.
[ @independent_agent=] 'independent_agent'
Gibt an, ob ein eigenständiger Verteilungs-Agent für diese Veröffentlichung vorhanden ist. independent_agent ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei true ist ein eigenständiger Verteilungs-Agent für diese Veröffentlichung vorhanden. Bei false verwendet die Veröffentlichung einen freigegebenen Verteilungs-Agent, und jedes Paar aus Verlegerdatenbank und Abonnentendatenbank besitzt einen einzelnen, freigegebenen Agent.[ @immediate_sync=] 'immediate_synchronization'
Gibt an, ob die Synchronisierungsdateien für die Veröffentlichung bei jeder Ausführung des Momentaufnahme-Agents neu erstellt werden. immediate_synchronization ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei true werden die Synchronisierungsdateien bei jeder Ausführung des Momentaufnahme-Agents erstellt oder neu erstellt. 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. Damit immediate_synchronization true ist, muss independent_agent ebenfalls true sein. Bei false werden die Synchronisierungsdateien nur erstellt, wenn neue Abonnements vorhanden sind. Beim inkrementellen Hinzufügen eines neuen Artikels zu einer vorhandenen Veröffentlichung muss für jedes Abonnement sp_addsubscription aufgerufen werden. Abonnenten können die Synchronisierungsdateien nach dem Einrichten des Abonnements erst empfangen, wenn die Momentaufnahme-Agents gestartet und abgeschlossen wurden.[ @enabled_for_internet=] '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 vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei einem Wert von true werden die Synchronisierungsdateien für die Veröffentlichung im Verzeichnis C:\Programme\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp gespeichert. Der Benutzer muss das Verzeichnis Ftp erstellen.[ @allow_push=] 'allow_push'
Gibt an, ob für die angegebene Veröffentlichung Pushabonnements erstellt werden können. allow_push ist vom Datentyp nvarchar(5). Mit dem Standardwert TRUE werden Pushabonnements für die Veröffentlichung zugelassen.[ @allow_pull=] 'allow_pull'
Gibt an, ob für die angegebene Veröffentlichung Pullabonnements erstellt werden können. allow_pull ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei false sind keine Pullabonnements für die Veröffentlichung zulässig.[ @allow_anonymous=] 'allow_anonymous'
Gibt an, ob für die angegebene Veröffentlichung anonyme Abonnements erstellt werden können. allow_anonymous ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei true muss immediate_synchronization ebenfalls auf true festgelegt werden. Bei false sind keine anonymen Abonnements für die Veröffentlichung zulässig.[ @allow_sync_tran=] 'allow_sync_tran'
Gibt an, ob Abonnements mit sofortigem Update für die Veröffentlichung zulässig sind. allow_sync_tran ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true wird nicht für Oracle-Verleger unterstützt.[ @autogen_sync_procs=] 'autogen_sync_procs'
Gibt an, ob die synchronisierende gespeicherte Prozedur für Abonnements mit Update beim Verleger generiert wird. autogen_sync_procs ist vom Datentyp nvarchar(5). Die folgenden Werte sind möglich:Wert
Beschreibung
true
Wird automatisch festgelegt, wenn das Aktualisieren von Abonnements aktiviert ist.
false
Wird automatisch für Oracle-Verleger festgelegt oder wenn das Aktualisieren von Abonnements nicht aktiviert ist.
NULL (Standard)
Ist standardmäßig true, wenn das Aktualisieren von Abonnements aktiviert ist, und false, wenn das Aktualisieren von Abonnements nicht aktiviert ist.
Hinweis Der vom Benutzer angegebene Wert für autogen_sync_procswird abhängig von den für allow_queued_tran und allow_sync_tran angegebenen Werten überschrieben.
[ @retention=] retention
Die Beibehaltungsdauer (in Stunden) für die Abonnementaktivität. retention ist vom Datentyp int. Der Standardwert ist 336 Stunden. Wenn ein Abonnement im Beibehaltungszeitraum nicht 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 dieser Wert 0 ist, laufen bekannte Abonnements der Veröffentlichung nie ab. Sie werden also nicht vom Agent für das Cleanup abgelaufener Abonnements entfernt.[ @allow_queued_tran= ] 'allow_queued_updating'
Aktiviert oder deaktiviert das Hinzufügen von Änderungen beim Abonnenten zu Warteschlangen, bis sie beim Verleger angewendet werden können. allow_queued_updating ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Bei false werden Änderungen auf dem Abonnenten nicht in eine Warteschlange gestellt. true wird nicht für Oracle-Verleger unterstützt.[ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
Gibt an, ob Momentaufnahmedateien im Standardordner gespeichert werden. snapshot_in_default_folder ist vom Datentyp nvarchar(5). Der Standardwert ist TRUE. Bei true befinden sich die Momentaufnahmedateien im Standardordner. Bei false wurden die Momentaufnahmedateien an dem durch alternate_snapshot_folder angegebenen alternativen Speicherort gespeichert. 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. Beachten Sie, dass dieser Parameter den Wert TRUE besitzen kann und dennoch ein Speicherort im @alt_snapshot_folder-Parameter angegeben werden kann. Diese Kombination gibt an, dass die Momentaufnahmedateien sowohl im Standard- als auch im alternativen Pfad gespeichert werden.[ @alt_snapshot_folder= ] 'alternate_snapshot_folder'
Gibt den Speicherort des anderen Ordners für die Momentaufnahme an. alternate_snapshot_folder ist vom Datentyp nvarchar(255) und hat den Standardwert NULL.[ @pre_snapshot_script= ] 'pre_snapshot_script'
Gibt einen Zeiger auf einen Speicherort für .SQL-Dateien an. pre_snapshot_script ist vom Datentyp nvarchar(255), und hat den Standardwert 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= ] 'post_snapshot_script'
Gibt einen Zeiger auf einen Speicherort für .SQL-Dateien an. post_snapshot_script ist vom Datentyp nvarchar(255) und hat den Standardwert 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= ] 'compress_snapshot'
Gibt an, dass die Momentaufnahme, die in den Speicherort @alt_snapshot_folder geschrieben wurde, in das Microsoft CAB-Format komprimiert werden soll. compress_snapshot ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. false gibt an, dass die Momentaufnahme nicht komprimiert wird. true gibt an, dass die Momentaufnahme komprimiert wird. Momentaufnahmedateien, die größer als 2 Gigabyte (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 = ] 'ftp_address'
Die Netzwerkadresse des FTP-Diensts für den Verteiler. ftp_address ist vom Datentyp sysname und hat den 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 Veröffentlichung gespeichert wird, kann jede Veröffentlichung einen unterschiedlichen Wert für ftp_address besitzen. Die Veröffentlichung muss die Weitergabe von Momentaufnahmen über FTP unterstützen.[ @ftp_port= ] ftp_port
Die Portnummer des FTP-Diensts für den Verteiler. ftp_port ist vom Datentyp int. Der Standardwert ist 21. 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 Veröffentlichung gespeichert wird, kann jede Veröffentlichung einen eigenen Wert für ftp_port besitzen.[ @ftp_subdirectory = ] 'ftp_subdirectory'
Gibt an, wo die Momentaufnahmedateien für den Verteilungs-Agent oder Merge-Agent eines Abonnenten zum Abholen verfügbar sind, wenn die Veröffentlichung das Weitergeben von Momentaufnahmen mithilfe von FTP unterstützt. ftp_subdirectory ist vom Datentyp nvarchar(255) und hat den Standardwert NULL. Da diese Eigenschaft für jede Veröffentlichung gespeichert wird, kann jede Veröffentlichung ihren eigenen Wert für ftp_subdirctory besitzen oder aber keine Unterverzeichnisse verwenden. Dies wird durch den Wert NULL angezeigt.[ @ftp_login = ] 'ftp_login'
Der Benutzername, mit dem eine Verbindung zum FTP-Dienst hergestellt wird. ftp_login ist vom Datentyp sysname und hat den Standardwert ANONYMOUS.[ @ftp_password = ] 'ftp_password'
Das Benutzerkennwort, mit dem eine Verbindung zum FTP-Dienst hergestellt wird. ftp_password ist vom Datentyp sysname und hat den Standardwert NULL.[ @allow_dts = ] 'allow_dts'
Gibt an, dass die Veröffentlichung Datentransformationen zulässt. Beim Erstellen eines Abonnements können Sie ein DTS-Paket angeben. allow_transformable_subscriptions ist vom Datentyp nvarchar(5). Der Standardwert FALSE lässt keine DTS-Transformationen zu. Wenn allow_dts den Wert true hat, muss sync_method entweder auf character oder auf concurrent_c festgelegt werden.true wird nicht für Oracle-Verleger unterstützt.
[ @allow_subscription_copy = ] 'allow_subscription_copy'
Aktiviert oder deaktiviert die Option zum Kopieren der Abonnementdatenbanken, die diese Veröffentlichung abonniert haben. allow_subscription_copy ist vom Datentypnvarchar(5). Der Standardwert ist FALSE.[ @conflict_policy = ] 'conflict_policy'
Gibt die Richtlinie zur Konfliktlösung an, die für die Option zum verzögerten Update über eine Warteschlange verwendet wird. conflict_policy ist vom Datentyp nvarchar(100). Der Standardwert ist NULL, und die folgenden Werte sind möglich.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 der Wert NULL ist und es sich um eine Momentaufnahmeveröffentlichung handelt, ist die Standardrichtlinie sub reinit. Wenn der Wert NULL ist und es sich nicht um eine Momentaufnahmeveröffentlichung handelt, ist der Standard pub wins.
Wird nicht für Oracle-Verleger unterstützt.
[ @centralized_conflicts = ] 'centralized_conflicts'
Gibt an, ob Konfliktdatensätze auf dem Verleger gespeichert werden. centralized_conflicts ist vom Datentyp nvarchar(5). Der Standardwert ist TRUE. Bei true werden Konfliktdatensätze auf dem Verleger gespeichert. Bei false werden die Konfliktdatensätze sowohl auf dem Verleger als auch auf dem Abonnenten gespeichert, der den Konflikt verursacht hat. Wird nicht für Oracle-Verleger unterstützt.[ @conflict_retention = ] conflict_retention
Gibt die Beibehaltungsdauer der Konflikte 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 vom Datentyp int. Der Standardwert ist 14. Wird nicht für Oracle-Verleger unterstützt.[ @queue_type = ] 'queue_type'
Gibt an, welcher Warteschlangentyp verwendet wird. queue_type ist vom Datentyp nvarchar(10). Der Standardwert ist NULL, und die folgenden Werte sind möglich.Wert
Beschreibung
sql
Verwendet SQL Server zum Speichern von Transaktionen.
NULL (Standard)
Standardmäßig gleichbedeutend mit sql; dadurch wird SQL Server zum Speichern von Transaktionen verwendet.
Hinweis Unterstützung für die Verwendung von Microsoft Message Queuing wurde eingestellt. Wird msmq als Wert angegeben, führt dies zu einer Warnung, und bei einer Replikation wird der Wert automatisch auf sql festgelegt.
Wird nicht für Oracle-Verleger unterstützt.
[ @add_to_active_directory = ] 'add_to_active_directory'
Dieser Parameter wurde als veraltet markiert und wird nur aus Gründen der Abwärtskompatibilität von Skripts unterstützt. Veröffentlichungsinformationen können nicht mehr zu Microsoft Active Directory hinzugefügt werden.[ @logreader_job_name = ] 'logreader_agent_name'
Der Name eines vorhandenen Agentauftrags. logreader_agent_name ist vom Datentyp sysname und hat den Standardwert NULL. Dieser Parameter wird nur angegeben, wenn der Protokolllese-Agent einen vorhandenen Auftrag verwendet, anstatt dass ein neuer Auftrag erstellt wird.[ @qreader_job_name = ] 'queue_reader_agent_name'
Der Name eines vorhandenen Agentauftrags. queue_reader_agent_name ist vom Datentyp sysname und hat den Standardwert NULL. Dieser Parameter wird nur angegeben, wenn der Warteschlangenlese-Agent einen vorhandenen Auftrag verwendet, anstatt dass ein neuer Auftrag erstellt wird.[ @publisher = ] 'publisher'
Gibt einen Nicht-SQL Server-Verleger an. publisher ist vom Datentyp sysname und hat den Standardwert NULL.Hinweis publisher sollte nicht beim Hinzufügen einer Veröffentlichung zu einem SQL Server-Verleger verwendet werden.
[ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
Gibt an, ob Abonnenten ein Abonnement dieser Veröffentlichung mit einer Sicherung statt einer Anfangsmomentaufnahme initialisieren können. allow_initialize_from_backup ist vom Datentyp nvarchar(5). Die folgenden Werte sind möglich:Wert
Beschreibung
true
Aktiviert die Initialisierung aus einer Sicherung.
false
Deaktiviert die Initialisierung aus einer Sicherung.
NULL (Standard)
Ist standardmäßig true für eine Veröffentlichung in einer Peer-zu-Peer-Replikationstopologie und false für alle anderen Veröffentlichungen.
Weitere Informationen finden Sie unter Initialisieren eines Transaktionsabonnements ohne Momentaufnahme.
Vorsicht Um fehlende Abonnentendaten zu vermeiden, wenn Sie sp_addpublication mit @allow_initialize_from_backup = N'true' verwenden, sollten Sie immer @immediate_sync = N'true' verwenden.
[ @replicate_ddl = ] replicate_ddl
Gibt an, ob die Schemareplikation für die Veröffentlichung unterstützt wird. replicate_ddl ist vom Datentyp int. Der Standardwert ist 1 für SQL Server-Verleger und 0 für Nicht-SQL Server-Verleger. 1 zeigt an, dass auf dem Verleger ausgeführte DDL-Anweisungen (Data Definition Language) repliziert werden, und 0 zeigt an, dass DDL-Anweisungen nicht repliziert werden. Die Schemareplikation wird nicht für Oracle-Verleger unterstützt. Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.Der @replicate\_ddl-Parameter wird berücksichtigt, wenn von einer DDL-Anweisung eine Spalte hinzugefügt wird. Der @replicate\_ddl-Parameter wird ignoriert, wenn von einer DDL-Anweisung eine Spalte aus den folgenden Gründen geändert oder gelöscht wird.
Wenn eine Spalte gelöscht wird, muss sysarticlecolumns aktualisiert werden, um zu verhindern, dass neue DML-Anweisungen die gelöschte Spalte aufnehmen, wodurch der Verteilungs-Agent fehlschlagen würde. Der @replicate\_ddl-Parameter 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 NULL-Zulässigkeit geändert. Dies hat zur Folge, dass DML-Anweisungen einen Wert enthalten, der möglicherweise nicht mit der Tabelle beim Abonnenten kompatibel ist. Solche DML-Anweisungen können bewirken, dass der Verteilungs-Agent fehlschlägt. Der @replicate\_ddl-Parameter wird ignoriert, da die Replikation immer die Schemaänderung replizieren muss.
Wenn von einer DDL-Anweisung eine neue Spalte hinzugefügt wird, enthält sysarticlecolumns die neue Spalte nicht. 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 = ] 'enabled_for_p2p'
Ermöglicht die Verwendung der Veröffentlichung in einer Peer-zu-Peer-Replikationstopologie. enabled_for_p2p ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. true gibt an, dass die Veröffentlichung die Peer-zu-Peer-Replikation unterstützt. Wird für enabled_for_p2p der Wert true festgelegt, gelten die folgenden Einschränkungen:allow_anonymous muss den Wert false haben.
allow_dts muss den Wert false haben.
allow_initialize_from_backup muss den Wert true haben.
allow_queued_tran muss den Wert false haben.
allow_sync_tran muss den Wert false haben.
conflict_policy muss den Wert false haben.
independent_agent muss den Wert true haben.
repl_freq muss den Wert continuous haben.
replicate_ddl muss den Wert 1 haben.
Weitere Informationen finden Sie unter Peer-zu-Peer-Transaktionsreplikation.
[ @publish_local_changes_only = ] 'publish_local_changes_only'
Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.[ @enabled_for_het_sub= ] 'enabled_for_het_sub'
Aktiviert die Unterstützung von Nicht-SQL Server-Abonnenten durch die Veröffentlichung. enabled_for_het_sub ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Der Wert true bedeutet, dass die Veröffentlichung Nicht-SQL Server-Abonnenten unterstützt. Wenn enabled_for_het_sub den Wert true hat, gelten folgende Einschränkungen:allow_initialize_from_backup muss den Wert false haben.
allow_push muss den Wert true haben.
allow_queued_tran muss den Wert false haben.
allow_subscription_copy muss den Wert false haben.
allow_sync_tran muss den Wert false haben.
autogen_sync_procs muss den Wert false haben.
conflict_policy muss den Wert NULL haben.
enabled_for_internet muss den Wert false haben.
enabled_for_p2p muss den Wert false haben.
ftp_address muss den Wert NULL haben.
ftp_subdirectory muss den Wert NULL haben.
ftp_password muss den Wert NULL haben.
pre_snapshot_script muss den Wert NULL haben.
post_snapshot_script muss den Wert NULL haben.
replicate_ddl muss den Wert 0 haben.
qreader_job_name muss den Wert NULL haben.
queue_type muss den Wert NULL haben.
sync_method darf nicht den Wert native oder concurrent haben.
Weitere Informationen finden Sie unter Nicht-SQL Server-Abonnenten.
[ @p2p_conflictdetection= ] '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 vom Datentyp nvarchar(5). Der Standardwert ist TRUE. Weitere Informationen finden Sie unter Konflikterkennung bei der Peer-zu-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 vom Datentyp int und hat den Standardwert NULL. Diese ID wird für die Konflikterkennung verwendet, wenn p2p_conflictdetection auf TRUE festgelegt ist. Geben Sie eine positive ID ungleich 0 an, die in der Topologie noch nicht verwendet wurde. Führen Sie zum Anzeigen einer Liste der bereits verwendeten IDs sp_help_peerconflictdetection aus.[ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
Legt fest, ob der Verteilungs-Agent nach Erkennung eines Konflikts die Verarbeitung von Änderungen fortsetzt. p2p_continue_onconflict ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE.Vorsicht Es wird empfohlen, den Standardwert FALSE zu verwenden. Wenn diese Option auf TRUE festgelegt wird, versucht der Verteilungs-Agent, die Datenkonvergenz in der Topologie herbeizuführen, indem die konfliktverursachende Zeile von dem 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 über die Konfliktbehandlung unter Konflikterkennung bei der Peer-zu-Peer-Replikation.
[ @allow_partition_switch= ] '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 vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Weitere Informationen finden Sie unter Replizieren partitionierter Tabellen und Indizes.[ @ replicate_partition_switch= ] 'replicate_partition_switch'
Gibt an, ob ALTER TABLE…SWITCH-Anweisungen, die für die veröffentlichte Datenbank ausgeführt werden, auf Abonnenten repliziert werden sollen. replicate_partition_switch ist vom Datentyp nvarchar(5). Der Standardwert ist FALSE. Diese Option ist nur gültig, wenn allow_partition_switch auf TRUE festgelegt wurde.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_addpublication wird bei der Momentaufnahme- und Transaktionsreplikation verwendet.
Wenn mehrere Veröffentlichungen vorhanden sind, die dasselbe Datenbankobjekt veröffentlichen, replizieren nur Veröffentlichungen, die für replicate_ddl den Wert 1 besitzen, die DDL-Anweisungen ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION und ALTER TRIGGER. Eine ALTER TABLE DROP COLUMN DDL-Anweisung wird jedoch von allen Veröffentlichungen repliziert, die die gelöschte Spalte veröffentlichen.
Damit an einer Veröffentlichung mit aktivierter DDL-Replikation (replicate_ddl = 1) nicht replizierende DDL-Änderungen vorgenommen werden können, muss zuerst durch Ausführen von sp_changepublication für replicate_ddl der Wert 0 festgelegt werden. Wenn die nicht replizierenden DDL-Anweisungen ausgestellt wurden, kann sp_changepublication erneut ausgeführt werden, um die DDL-Replikation wieder zu aktivieren.
Beispiel
-- 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 der festen Datenbankrolle db_owner können sp_addpublication ausführen. 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 für eine Windows-Gruppe reicht in diesem Fall nicht aus.
Siehe auch
Verweis
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)
Gespeicherte Replikationsprozeduren (Transact-SQL)