Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Maakt een snapshot of transactionele publicatie aan. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.
Transact-SQL syntaxis-conventies
Syntax
sys.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' ]
[ ; ]
Arguments
[ @publication = ] N'publicatie'
De naam van de publicatie die je moet creëren. @publication is sysname, zonder standaard. De naam moet uniek zijn binnen de database.
[ @taskid = ] taskid
Alleen ondersteund voor achterwaartse compatibiliteit; Gebruik sp_addpublication_snapshot.
[ @restricted = ] N'restricted'
Alleen ondersteund voor achterwaartse compatibiliteit; Gebruik default_access.
[ @sync_method = ] N'sync_method'
De synchronisatiemodus. @sync_method is nvarchar(40) en kan een van de volgende waarden zijn.
| Value | Description |
|---|---|
native
1 |
Produceert native-mode bulkkopie-programma-uitvoer van alle tabellen. |
character |
Produceert bulkkopieën van het karaktermodus en uitvoer van het programma van alle tabellen.
Opmerking: Voor een Oracle Publisher character is alleen geldig voor snapshotreplicatie. |
concurrent
1 |
Produceert native-mode bulkkopieën van alle tabellen, maar vergrendelt tabellen niet tijdens de snapshot. Alleen ondersteund voor transactionele publicaties. |
concurrent_c |
Produceert bulkkopieën van alle tabellen in karaktermodus, maar vergrendelt tabellen niet tijdens de snapshot. Alleen ondersteund voor transactionele publicaties. |
database snapshot |
Produceert native-mode bulkkopieën van programma-uitvoer van alle tabellen uit een databasesnapshot. Databasesnapshots zijn niet beschikbaar in elke editie van SQL Server. Zie Edities en ondersteunde functies van SQL Server 2022 voor een lijst met functies die worden ondersteund door de edities van SQL Server. |
database snapshot character |
Produceert bulkkopieën van het programma dat alle tabellen uit een databasesnapshot uitvoert. Databasesnapshots zijn niet beschikbaar in elke editie van SQL Server. Zie Edities en ondersteunde functies van SQL Server 2022 voor een lijst met functies die worden ondersteund door de edities van SQL Server. |
NULL (standaard) |
Standaard voor native SQL Server Publishers. Voor niet-SQL Server uitgevers is character het standaard wanneer de waarde van @repl_freq is Snapshot en concurrent_c voor alle andere gevallen. |
1 Niet ondersteund voor Oracle Publishers.
[ @repl_freq = ] N'repl_freq'
Het type replicatiefrequentie @repl_freq is nvarchar(10) en kan een van de volgende waarden zijn.
| Value | Description |
|---|---|
continuous (standaard) |
De loglezeragent draait continu. Voor niet-SQL Server uitgevers vereist dit dat @sync_method is ingesteld op concurrent_c. |
snapshot |
De log reader agent werkt volgens een schema. Voor niet-SQL Server uitgevers vereist dit dat @sync_method is ingesteld op character. |
[ @description = ] Beschrijving van'
Een optionele beschrijving voor de publicatie.
@description is nvarchar(255), met een standaard van NULL.
[ @status = ] N'status'
Geeft aan of publicatiegegevens beschikbaar zijn. @status is nvarchar(8) en kan een van de volgende waarden zijn.
| Value | Description |
|---|---|
active |
Publicatiegegevens zijn direct beschikbaar voor abonnees. |
inactive (standaard) |
Publicatiegegevens zijn niet beschikbaar voor abonnees wanneer de publicatie voor het eerst wordt aangemaakt (ze kunnen zich abonneren, maar de abonnementen worden niet verwerkt). |
Niet ondersteund door Oracle Publishers.
[ @independent_agent = ] N'independent_agent'
Geeft aan of er een zelfstandige Distribution Agent voor deze publicatie is.
@independent_agent is nvarchar(5), met als standaard .false
- Als
true, is er een zelfstandige Distribution Agent voor deze publicatie. - Als
false, gebruikt de publicatie een gedeelde Distribution Agent, en elk Publisher-database/abonneedatabasepaar heeft één enkele, gedeelde agent.
[ @immediate_sync = ] N'immediate_sync'
Geeft aan of de synchronisatiebestanden voor de publicatie worden aangemaakt telkens wanneer de Snapshot Agent draait.
@immediate_sync is nvarchar(5), met een standaard van false.
Als true, worden de synchronisatiebestanden aangemaakt of opnieuw aangemaakt telkens wanneer de Snapshot Agent draait. Abonnees kunnen de synchronisatiebestanden direct ontvangen als de Snapshot Agent is voltooid voordat het abonnement wordt aangemaakt. Nieuwe abonnementen ontvangen de nieuwste synchronisatiebestanden die worden gegenereerd door de meest recente uitvoering van de Snapshot Agent.
@independent_agent moet zijn true voor @immediate_sync om zo te zijn true. Als false, worden de synchronisatiebestanden alleen aangemaakt als er nieuwe abonnementen zijn gemaakt. Je moet sp_addsubscription bellen voor elk abonnement wanneer je stapsgewijs een nieuw artikel toevoegt aan een bestaande publicatie. Abonnees kunnen de synchronisatiebestanden na het abonnement pas ontvangen als de Snapshot Agents zijn gestart en afgerond.
[ @enabled_for_internet = ] N'enabled_for_internet'
Geeft aan of de publicatie is ingeschakeld voor het internet, en bepaalt of bestandsoverdrachtprotocol (FTP) gebruikt kan worden om de snapshotbestanden naar een abonnee over te dragen.
@enabled_for_internet is nvarchar(5), met als standaard .false Als true, worden de synchronisatiebestanden voor de publicatie in de C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp map geplaatst. De gebruiker moet de Ftp map aanmaken.
[ @allow_push = ] N'allow_push'
Specificeert of push-abonnementen kunnen worden aangemaakt voor de betreffende publicatie.
@allow_push is nvarchar(5), met standaard , truewat push-abonnementen op de publicatie toestaat.
[ @allow_pull = ] N'allow_pull'
Geeft aan of pull-abonnementen kunnen worden aangemaakt voor de betreffende publicatie.
@allow_pull is nvarchar(5), met een standaard van false. Als false, zijn trekabonnementen niet toegestaan op de publicatie.
[ @allow_anonymous = ] N'allow_anonymous'
Geeft aan of anonieme abonnementen kunnen worden aangemaakt voor de betreffende publicatie.
@allow_anonymous is nvarchar(5), met als standaard .false Als true, moet @immediate_sync ook worden ingesteld op true. Als false, zijn anonieme abonnementen niet toegestaan op de publicatie.
[ @allow_sync_tran = ] N'allow_sync_tran'
Geeft aan of het direct bijwerken van abonnementen op de publicatie zijn toegestaan.
@allow_sync_tran is nvarchar(5), met een standaard van false.
true wordt niet ondersteund voor Oracle Publishers.
[ @autogen_sync_procs = ] N'autogen_sync_procs'
Geeft aan of de synchronisatie van opgeslagen procedures voor het bijwerken van abonnementen wordt gegenereerd bij de Publisher. @autogen_sync_procs is nvarchar(5) en kan een van de volgende waarden zijn.
| Value | Description |
|---|---|
true |
Automatisch instellen bij het updaten van abonnementen is ingeschakeld. |
false |
Automatisch ingesteld wanneer abonnementen worden bijgewerkt is niet ingeschakeld of voor Oracle Publishers. |
NULL (standaard) |
Standaard staat het true bij het updaten van abonnementen aan en het false bijwerken van abonnementen niet. |
Note
De door de gebruiker opgegeven waarde voor @autogen_sync_procswordt overschreven afhankelijk van de waarden die zijn gespecificeerd voor @allow_queued_tran en @allow_sync_tran.
[ @retention = ] behoud
De retentieperiode in uren voor abonnementsactiviteiten.
@retention is int, met een standaard van 336. Als een abonnement niet actief is binnen de retentieperiode, verloopt het en wordt het verwijderd. De waarde kan hoger zijn dan de maximale retentieperiode van de distributiedatabase die door de Publisher wordt gebruikt. Als 0, zullen bekende abonnementen op de publicatie nooit verlopen en worden ze verwijderd door de Expired Subscription Cleanup Agent.
[ @allow_queued_tran = ] N'allow_queued_tran'
Maakt het wachtrijen van wijzigingen bij de abonnee mogelijk of schakelt uit totdat ze bij de Publisher kunnen worden toegepast.
@allow_queued_tran is nvarchar(5), met een standaard van false.
- Als
falsewijzigingen bij de abonnee niet in de wachtrij staan. -
truewordt niet ondersteund voor Oracle Publishers.
[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'
Geeft aan of snapshotbestanden in de standaardmap worden opgeslagen.
@snapshot_in_defaultfolder is nvarchar(5), met als standaard .true
- Als
trueu momentopnamebestanden kunt vinden in de standaardmap. - Als
false, zijn snapshotbestanden opgeslagen op de alternatieve locatie die door @alt_snapshot_folder is gespecificeerd.
Alternatieve locaties kunnen zich op een andere server bevinden, op een netwerkstation of op verwisselbare media (zoals verwisselbare schijven). Je kunt de snapshotbestanden ook opslaan op een FTP-site, zodat de abonnee ze later kan ophalen. Deze parameter kan waar zijn en toch een locatie hebben in de @alt_snapshot_folder parameter. Deze combinatie specificeert dat de snapshotbestanden zowel op de standaard- als op de alternatieve locatie worden opgeslagen.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Hiermee geeft u de locatie van de alternatieve map voor de momentopname.
@alt_snapshot_folder is nvarchar(255), met een standaard van NULL.
[ @pre_snapshot_script = ] N'pre_snapshot_script'
Specificeert een pointer naar een .sql bestandslocatie.
@pre_snapshot_script is nvarchar(255), met een standaard van NULL. De Distribution Agent zal het pre-snapshot script uitvoeren voordat hij een van de gerepliceerde objectscripts uitvoert bij het toepassen van een snapshot bij een abonnee. Het script wordt uitgevoerd in de beveiligingscontext die door de Distribution Agent wordt gebruikt bij het verbinden met de abonnementsdatabase.
[ @post_snapshot_script = ] N'post_snapshot_script'
Specificeert een pointer naar een .sql bestandslocatie.
@post_snapshot_script is nvarchar(255), met een standaard van NULL. De Distribution Agent voert het post-snapshot script uit nadat alle andere gerepliceerde objectscripts en data zijn toegepast tijdens een initiële synchronisatie. Het script wordt uitgevoerd in de beveiligingscontext die door de Distribution Agent wordt gebruikt bij het verbinden met de abonnementsdatabase.
[ @compress_snapshot = ] N'compress_snapshot'
Specificeert dat de snapshot die naar de @alt_snapshot_folder locatie wordt geschreven, gecomprimeerd moet worden in het Microsoft CAB-formaat.
@compress_snapshot is nvarchar(5), met een standaard van false.
-
falsespecificeert dat de snapshots niet worden gecomprimeerd. -
truespecificeert dat de snapshot gecomprimeerd is.
Snapshotbestanden die groter zijn dan 2 gigabyte (GB) kunnen niet worden gecomprimeerd. Gecomprimeerde snapshotbestanden worden ontcomprimeerd op de locatie waar de Distribution Agent draait; pull-abonnementen worden doorgaans gebruikt met gecomprimeerde snapshots zodat bestanden bij de abonnee worden ontdrukt. De snapshot in de standaardmap kan niet worden gecomprimeerd.
[ @ftp_address = ] N'ftp_address'
Het netwerkadres van de FTP-service voor de distributeur.
@ftp_address is sysname, met als standaard .NULL Hiermee geeft u op waar momentopnamebestanden van de publicatie zich bevinden voor de distributieagent of samenvoegagent van een abonnee die moet worden opgehaald. Omdat deze eigenschap voor elke publicatie wordt opgeslagen, kan elke publicatie een andere @ftp_address hebben. De publicatie moet het propageren van snapshots met FTP ondersteunen.
[ @ftp_port = ] ftp_port
Het poortnummer van de FTP-service voor de distributeur.
@ftp_port is int, met als standaard .21 Geeft aan waar de publicatiesnapshotbestanden zich bevinden, zodat de Distribution Agent of Merge Agent van een abonnee kan ophalen. Omdat deze eigenschap voor elke publicatie wordt opgeslagen, kan elke publicatie zijn eigen @ftp_port hebben.
[ @ftp_subdirectory = ] N'ftp_subdirectory'
Hiermee geeft u op waar de momentopnamebestanden beschikbaar zijn voor de distributieagent of de samenvoegagent van de abonnee om op te halen als de publicatie ondersteuning biedt voor het doorgeven van momentopnamen met FTP.
@ftp_subdirectory is nvarchar(255), met een standaard van NULL. Omdat deze eigenschap voor elke publicatie wordt opgeslagen, kan elke publicatie zijn eigen @ftp_subdirctory hebben of ervoor kiezen geen subdirectory te hebben, aangegeven met een NULL waarde.
[ @ftp_login = ] N'ftp_login'
De gebruikersnaam die wordt gebruikt om verbinding te maken met de FTP-service.
@ftp_login is sysname, met als standaard .anonymous
[ @ftp_password = ] N'ftp_password'
Het gebruikerswachtwoord dat wordt gebruikt om verbinding te maken met de FTP-service.
@ftp_password is sysname, met als standaard .NULL
[ @allow_dts = ] N'allow_dts'
Hiermee geeft u op dat de publicatie gegevenstransformaties toestaat. Je kunt een DTS-pakket specificeren bij het aanmaken van een abonnement.
@allow_dts is nvarchar(5), met een standaard van false, wat geen DTS-transformaties toestaat. Wanneer @allow_dts waar is, moet @sync_method worden ingesteld op ofwel character of concurrent_c.
true wordt niet ondersteund voor Oracle Publishers.
[ @allow_subscription_copy = ] N'allow_subscription_copy'
Maakt het mogelijk of schakelt de mogelijkheid uit om de abonnementsdatabases te kopiëren die zich op deze publicatie abonneren.
@allow_subscription_copy is nvarchar(5), met een standaard van false.
[ @conflict_policy = ] N'conflict_policy'
Hiermee geeft u het conflictoplossingsbeleid dat wordt gevolgd wanneer de optie voor het bijwerken van abonnees in de wachtrij wordt gebruikt. @conflict_policy is nvarchar(100) en kan een van de volgende waarden zijn.
| Value | Description |
|---|---|
pub wins |
Publisher wint het conflict. |
sub reinit |
Initialiseer het abonnement opnieuw. |
sub wins |
De abonnee wint het conflict. |
NULL (standaard) |
Als NULL, en de publicatie een momentopnamepublicatie is, wordt sub reinithet standaardbeleid . Als NULL en de publicatie geen snapshotpublicatie is, wordt pub winsde standaard . |
Niet ondersteund door Oracle Publishers.
[ @centralized_conflicts = ] N'centralized_conflicts'
Geeft aan of conflictrecords worden opgeslagen op de Publisher.
@centralized_conflicts is nvarchar(5), met als standaard .NULL
- Als
true, worden conflictrecords opgeslagen bij de Publisher. - Als
false, worden conflictgegevens opgeslagen bij zowel de uitgever als bij de abonnee die het conflict heeft veroorzaakt.
Niet ondersteund door Oracle Publishers.
[ @conflict_retention = ] conflict_retention
Hiermee geeft u de conflictretentieperiode, in dagen. Dit is de periode waarin conflictmetadata wordt opgeslagen voor peer-to-peer transactionele replicatie en queue-updates van abonnementen.
@conflict_retention is int, met als standaard .14
Niet ondersteund door Oracle Publishers.
[ @queue_type = ] N'queue_type'
Hiermee geeft u op welk type wachtrij wordt gebruikt. @queue_type is nvarchar(10) en kan een van deze waarden zijn.
| Value | Description |
|---|---|
sql |
Gebruik SQL Server om transacties op te slaan. |
NULL (standaard) |
Standaard is sql, wat specificeert dat SQL Server wordt gebruikt om transacties op te slaan. |
Note
Ondersteuning voor het gebruik van Microsoft Message Queuing is stopgezet. Het specificeren van een waarde van msmq resulteert in een waarschuwing, en replicatie zet de waarde automatisch op sql.
Niet ondersteund door Oracle Publishers.
[ @add_to_active_directory = ] N'add_to_active_directory'
Deze parameter is verouderd en wordt alleen ondersteund voor de achterwaartse compatibiliteit van scripts. Je kunt geen publicatie-informatie meer toevoegen aan de Microsoft Active Directory.
[ @logreader_job_name = ] N'logreader_job_name'
De naam van een bestaande agentfunctie.
@logreader_job_name is een systeemnaam, met als standaard .NULL Deze parameter wordt alleen gespecificeerd wanneer de Log Reader Agent een bestaande taak gebruikt in plaats van een nieuwe taak te maken.
[ @qreader_job_name = ] N'qreader_job_name'
De naam van een bestaande agentfunctie.
@qreader_job_name is een systeemnaam, met als standaard .NULL Deze parameter wordt alleen gespecificeerd wanneer de Queue Reader Agent een bestaande taak gebruikt in plaats van een nieuwe taak te creëren.
[ @publisher = ] N'uitgever'
Hiermee geeft u een niet-SQL Server-uitgever.
@publisher is sysname, met als standaard NULL.
@publisher mag niet gebruikt worden bij het toevoegen van een publicatie aan een SQL Server Publisher.
[ @allow_initialize_from_backup = ] N'allow_initialize_from_backup'
Geeft aan of abonnees een abonnement op deze publicatie kunnen initialiseren vanuit een back-up in plaats van een eerste momentopname. @allow_initialize_from_backup is nvarchar(5) en kan een van deze waarden zijn:
| Value | Description |
|---|---|
true |
Maakt initialisatie vanuit een back-up mogelijk. |
false |
Schakelt initialisatie uit vanuit een back-up. |
NULL (standaard) |
Standaard is het voor true een publicatie in een peer-to-peer replicatietopologie en false voor alle andere publicaties. |
Zie Een transactioneel abonnement initialiseren zonder momentopname voor meer informatie.
Warning
Om te voorkomen dat abonneegegevens ontlopen, gebruik @immediate_sync = N'true'bij gebruik sp_addpublication met @allow_initialize_from_backup = N'true', altijd .
[ @replicate_ddl = ] replicate_ddl
Geeft aan of schemareplicatie wordt ondersteund voor de publicatie.
@replicate_ddl is int, met een standaard voor 1 SQL Server uitgevers en 0 voor niet-SQL Server uitgevers.
-
1geeft aan dat data definition language (DDL)-instructies die bij de uitgever worden uitgevoerd, worden gerepliceerd. -
0geeft aan dat DDL-statements niet worden gerepliceerd.
Note
Schemareplicatie wordt niet ondersteund voor Oracle Publishers.
Zie Schemawijzigingen aanbrengen in publicatiedatabasesvoor meer informatie.
De @replicate_ddl-parameter wordt gerespecteerd wanneer een DDL-instructie een kolom toevoegt. De parameter @replicate_ddl wordt genegeerd wanneer een DDL-instructie een kolom wijzigt of weglaat om de volgende redenen.
Wanneer een kolom wordt verwijderd,
sysarticlecolumnsmoet deze worden bijgewerkt om te voorkomen dat nieuwe DML-statements de verwijderde kolom bevatten, wat zou leiden tot een mislukking van de distributieagent. De parameter @replicate_ddl wordt genegeerd omdat replicatie altijd de schemawijziging moet repliceren.Wanneer een kolom wordt gewijzigd, kan het brondatatype of de nulbaarheid zijn veranderd, waardoor DML-statements een waarde bevatten die mogelijk niet compatibel is met de tabel bij de abonnee. Dergelijke DML-statements kunnen ervoor zorgen dat de distributieagent faalt. De parameter @replicate_ddl wordt genegeerd omdat replicatie altijd de schemawijziging moet repliceren.
Wanneer een DDL-instructie een nieuwe kolom toevoegt,
sysarticlecolumnsbevat die de nieuwe kolom niet. DML-instructies proberen geen data voor de nieuwe kolom te repliceren. De parameter wordt gerespecteerd omdat het wel of niet repliceren van de DDL acceptabel is.
[ @enabled_for_p2p = ] N'enabled_for_p2p'
Maakt het mogelijk om de publicatie te gebruiken in een peer-to-peer replicatietopologie.
@enabled_for_p2p is nvarchar(5), met als standaard .false
true geeft aan dat de publicatie peer-to-peer-replicatie ondersteunt. Bij het instellen van @enabled_for_p2p op true, gelden de volgende beperkingen:
-
@allow_anonymous moet wel .
false -
@allow_dts moet wel zo zijn
false. -
@allow_initialize_from_backup moet wel zo zijn
true. -
@allow_queued_tran moet wel zijn
false. -
@allow_sync_tran moet wel zijn
false. -
@conflict_policy moet wel zo zijn
false. -
@independent_agent moet wel zijn
true. -
@repl_freq moet wel zijn
continuous. -
@replicate_ddl moet wel zo zijn
1.
Voor meer informatie, zie Peer-to-Peer - Transactionele Replicatie.
[ @publish_local_changes_only = ] N'publish_local_changes_only'
Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
[ @enabled_for_het_sub = ] N'enabled_for_het_sub'
Maakt het mogelijk dat de publicatie niet-SQL Server-abonnees ondersteunt.
@enabled_for_het_sub is nvarchar(5), met een standaard van false. Een waarde van true betekent dat de publicatie niet-SQL Server-abonnees ondersteunt. Wanneer @enabled_for_het_sub is true, gelden de volgende beperkingen:
-
@allow_initialize_from_backup moet wel zo zijn
false. -
@allow_push moet wel zo zijn
true. -
@allow_queued_tran moet wel zijn
false. -
@allow_subscription_copy moet wel zo zijn
false. -
@allow_sync_tran moet wel zijn
false. -
@autogen_sync_procs moet wel zo zijn
false. -
@conflict_policy moet wel zo zijn
NULL. -
@enabled_for_internet moet wel zo zijn
false. -
@enabled_for_p2p moet wel zo zijn
false. -
@ftp_address moet wel zo zijn
NULL. -
@ftp_subdirectory moet wel zo zijn
NULL. -
@ftp_password moet wel zijn
NULL. -
@pre_snapshot_script moet wel zo zijn
NULL. -
@post_snapshot_script moet wel zo zijn
NULL. - @replicate_ddl moet 0 zijn.
-
@qreader_job_name moet wel zo zijn
NULL. -
@queue_type moet wel zo zijn
NULL. -
@sync_method kan niet zijn
nativeofconcurrent.
Zie Niet-SQL Server-abonnees voor meer informatie.
[ @p2p_conflictdetection = ] N'p2p_conflictdetection'
Stelt de Distribution Agent in staat om conflicten te detecteren als de publicatie is ingeschakeld voor peer-to-peer replicatie.
@p2p_conflictdetection is nvarchar(5), met als standaard .false Zie Peer-to-Peer - Conflictdetectie in peer-to-peer-replicatie voor meer informatie.
[ @p2p_originator_id = ] p2p_originator_id
Hiermee geeft u een id op voor een knooppunt in een peer-to-peer-topologie.
@p2p_originator_id is int, met als standaard .NULL Deze ID wordt gebruikt voor conflictdetectie als @p2p_conflictdetection op TRUE is gezet. Specificeer een positieve, niet-nul ID die niet in de topologie is gebruikt. Voor een lijst van gebruikte ID's voert sp_help_peerconflictdetection uit.
[ @p2p_continue_onconflict = ] N'p2p_continue_onconflict'
Bepaalt of de Distribution Agent wijzigingen blijft verwerken nadat een conflict is gedetecteerd.
@p2p_continue_onconflict is nvarchar(5), met een standaard van false.
Caution
We raden aan om de standaardwaarde van falsete gebruiken. Wanneer deze optie is ingesteld trueop, probeert de distributieagent gegevens in de topologie te convergeren door de conflicterende rij van het knooppunt toe te passen die de hoogste originator-id is. Deze methode garandeert geen convergentie. Zorg ervoor dat de topologie consistent is nadat een conflict is gedetecteerd. Zie 'Conflicten afhandelen' in Peer-to-Peer - Conflictdetectie in Peer-to-Peer-replicatie voor meer informatie.
[ @allow_partition_switch = ] N'allow_partition_switch'
Hiermee geeft u op of ALTER TABLE...SWITCH instructies kunnen worden uitgevoerd voor de gepubliceerde database.
@allow_partition_switch is nvarchar(5), met als standaard .false Zie Gepartitioneerde tabellen en indexen repliceren voor meer informatie.
[ @replicate_partition_switch = ] N'replicate_partition_switch'
Hiermee geeft u op of ALTER TABLE...SWITCH instructies die worden uitgevoerd op basis van de gepubliceerde database moeten worden gerepliceerd naar abonnees.
@replicate_partition_switch is nvarchar(5), met een standaard van NULL. Deze optie is alleen geldig als @allow_partition_switch op WAAR is gezet.
[ @allow_drop = ] N'allow_drop'
Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'
Van toepassing op: SQL Server 2019 (15.x) CU 13 en latere versies.
@p2p_conflictdetection_policy is nvarchar(12) en kan een van deze waarden zijn:
| Value | Description |
|---|---|
originatorid (standaard) |
De distributieagent detecteert het conflict en bepaalt de winnaar op basis van de oorspronkelijke ID, als p2p_continue_onconflict = N'true'. Anders levert het een fout op. |
lastwriter |
De distributieagent detecteert het conflict en bepaalt de winnaar op basis van de datum en tijd van de laatste schrijver als p2p_continue_onconflict = N'true'. Anders levert het een fout op. |
Note
Wanneer je specificeertoriginatorid, is conflictdetectie hetzelfde als bij SQL Server 2019 (15.x) CU 12 en eerdere versies. Wanneer je specificeertlastwriter, laat SQL Server conflicten automatisch oplossen op basis van de meest recente schrijf.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Remarks
sp_addpublication wordt gebruikt bij snapshotreplicatie en transactionele replicatie.
Als er meerdere publicaties bestaan die hetzelfde databaseobject publiceren, repliceren ALTER TABLEalleen publicaties met een @replicate_ddl waarde van 1 , ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION, en ALTER TRIGGER DDL-uitspraken. Een ALTER TABLE DROP COLUMN DDL-verklaring wordt echter gerepliceerd door alle publicaties die de weggelaten kolom publiceren.
Met DDL-replicatie ingeschakeld (@replicate_ddl = 1) voor een publicatie, moet sp_changepublication om niet-replicerende DDL-wijzigingen aan te brengen eerst worden uitgevoerd om @replicate_ddl0op te stellen. Nadat de niet-replicerende DDL-instructies zijn uitgegeven, kan sp_changepublication opnieuw worden uitgevoerd om DDL-replicatie weer aan te zetten.
Examples
-- 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
Permissions
Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_addpublication. Windows authentication-logins moeten een gebruikersaccount in de database hebben dat hun Windows-gebruikersaccount vertegenwoordigt. Een gebruikersaccount dat een Windows-groep vertegenwoordigt is niet voldoende.
Verwante inhoud
- 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)
- Gegevens en databaseobjecten publiceren
- Opslagprocedures voor replicatie (Transact-SQL)