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 Database
Voegt een abonnement toe aan een publicatie en stelt de abonneestatus in. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.
Transact-SQL syntaxis-conventies
Syntaxis
sp_addsubscription
[ @publication = ] N'publication'
[ , [ @article = ] N'article' ]
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @destination_db = ] N'destination_db' ]
[ , [ @sync_type = ] N'sync_type' ]
[ , [ @status = ] N'status' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @update_mode = ] N'update_mode' ]
[ , [ @loopback_detection = ] N'loopback_detection' ]
[ , [ @frequency_type = ] frequency_type ]
[ , [ @frequency_interval = ] frequency_interval ]
[ , [ @frequency_relative_interval = ] frequency_relative_interval ]
[ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
[ , [ @frequency_subday = ] frequency_subday ]
[ , [ @frequency_subday_interval = ] frequency_subday_interval ]
[ , [ @active_start_time_of_day = ] active_start_time_of_day ]
[ , [ @active_end_time_of_day = ] active_end_time_of_day ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @optional_command_line = ] N'optional_command_line' ]
[ , [ @reserved = ] N'reserved' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @dts_package_name = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] N'dts_package_location' ]
[ , [ @distribution_job_name = ] N'distribution_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @backupdevicetype = ] N'backupdevicetype' ]
[ , [ @backupdevicename = ] N'backupdevicename' ]
[ , [ @mediapassword = ] N'mediapassword' ]
[ , [ @password = ] N'password' ]
[ , [ @fileidhint = ] fileidhint ]
[ , [ @unload = ] unload ]
[ , [ @subscriptionlsn = ] subscriptionlsn ]
[ , [ @subscriptionstreams = ] subscriptionstreams ]
[ , [ @subscriber_type = ] subscriber_type ]
[ , [ @memory_optimized = ] memory_optimized ]
[ ; ]
Arguments
[ @publication = ] N'publicatie'
De naam van de publicatie. @publication is sysname, zonder standaard.
[ @article = ] N'artikel'
Het artikel waarop de publicatie is geabonneerd.
@article is een systeemnaam, met als standaard .all Als all, wordt een abonnement toegevoegd aan alle artikelen in die publicatie. Alleen waarden van all of NULL worden ondersteund voor Oracle Publishers.
[ @subscriber = ] N'abonnee'
De naam van de abonnee.
@subscriber is sysname, met als standaard .NULL
Opmerking
De servernaam kan worden opgegeven als <Hostname>,<PortNumber> voor een standaardexemplaren of <Hostname>\<InstanceName>,<PortNumber> voor een benoemd exemplaar. Geef het poortnummer voor uw verbinding op wanneer SQL Server is geïmplementeerd in Linux of Windows met een aangepaste poort en de browserservice is uitgeschakeld. Het gebruik van aangepaste poortnummers voor externe distributeur is van toepassing op SQL Server 2019 (15.x) en latere versies.
[ @destination_db = ] N'destination_db'
De naam van de bestemmingsdatabase waarin gerepliceerde data geplaatst moet worden.
@destination_db is een systeemnaam, met standaard .NULL Wanneer NULL, wordt @destination_db ingesteld op de naam van de publicatiedatabase. Voor Oracle Publishers moet @destination_db worden gespecificeerd. Voor een niet-SQL Server Subscriber specificeert u een waarde van (standaardbestemming) voor @destination_db.
[ @sync_type = ] N'sync_type'
Het type abonnementssynchronisatie. @sync_type is nvarchar(255) en kan een van de volgende waarden zijn:
| Waarde | Description |
|---|---|
none
1 |
De abonnee heeft het schema en de initiële gegevens voor gepubliceerde tabellen al. |
automatic (standaard) |
Schema- en initiële gegevens voor gepubliceerde tabellen worden eerst naar de abonnee overgedragen. |
replication support only
2 |
Biedt automatische generatie bij de abonnee van aangepaste procedures en triggers die het bijwerken van abonnementen ondersteunen, indien van toepassing. Gaat ervan uit dat de abonnee het schema en de initiële gegevens voor gepubliceerde tabellen al heeft. Bij het configureren van een peer-to-peer transactionele replicatietopologie, zorg ervoor dat de data op alle knooppunten in de topologie identiek is. Voor meer informatie, zie Peer-to-Peer - Transactionele Replicatie. |
initialize with backup
2 |
Schema- en initiële gegevens voor gepubliceerde tabellen worden verkregen uit een back-up van de publicatiedatabase. Gaat ervan uit dat de abonnee toegang heeft tot een back-up van de publicatiedatabase. De locatie van de back-up en het mediatype voor de back-up worden gespecificeerd door @backupdevicename en @backupdevicetype. Bij gebruik van deze optie hoeft een peer-to-peer transactionele replicatietopologie niet tijdens de configuratie te worden gequiesced. |
initialize from lsn |
Gebruikt wanneer je een node toevoegt aan een peer-to-peer transactionele replicatietopologie. Gebruikt om @subscriptionlsn ervoor te zorgen dat alle relevante transacties worden gerepliceerd naar de nieuwe node. Gaat ervan uit dat de abonnee het schema en de initiële gegevens voor gepubliceerde tabellen al heeft. Voor meer informatie, zie Peer-to-Peer - Transactionele Replicatie. |
1 Deze optie is verouderd. Gebruik in plaats daarvan alleen replicatieondersteuning.
2 Niet ondersteund voor abonnementen op niet-SQL Server-publicaties.
Opmerking
Systeemtabellen en gegevens worden altijd overgedragen.
[ @status = ] N'status'
De abonnementsstatus.
@status is een systeemnaam, met als standaard .NULL Wanneer deze parameter niet expliciet is ingesteld, stelt replicatie deze automatisch in op een van deze waarden.
| Waarde | Description |
|---|---|
active |
Het abonnement is geïnitialiseerd en klaar om wijzigingen te accepteren. Deze optie wordt ingesteld wanneer de waarde van @sync_type nul is, initialiseren met back-up of alleen replicatieondersteuning. |
subscribed |
Het abonnement moet geïnitialiseerd worden. Deze optie wordt ingesteld wanneer de waarde van @sync_type automatisch is. |
[ @subscription_type = ] N'subscription_type'
Het soort abonnement.
@subscription_type is nvarchar(4), met een standaard van push. Kan of pushpull. De distributieagenten van push-abonnementen bevinden zich bij de distributeur, en de distributieagenten van pull-abonnementen bij de abonnee.
@subscription_type kan zijn pull om een benoemd pull-abonnement aan te maken dat bekend is bij de uitgever. Voor meer informatie, zie Abonneer je op publicaties.
Opmerking
Anonieme abonnementen hoeven deze opgeslagen procedure niet te gebruiken.
[ @update_mode = ] N'update_mode'
Het type update. @update_mode is nvarchar(30) en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
read only (standaard) |
Het abonnement heeft het kenmerk Alleen-lezen. De wijzigingen bij de abonnee worden niet naar de uitgever gestuurd. |
sync tran |
Ondersteunt het direct updaten van abonnementen. Niet ondersteund door Oracle Publishers. |
queued tran |
Maakt het abonnement mogelijk voor updates in de wachtrij. Datawijzigingen kunnen bij de abonnee worden gedaan, in een wachtrij worden opgeslagen en vervolgens naar de uitgever worden doorgegeven. Niet ondersteund door Oracle Publishers. |
failover |
Maakt het abonnement mogelijk voor onmiddellijke updates met wachtrij-updates als failover. Datawijzigingen kunnen bij de abonnee worden aangebracht en direct aan de uitgever worden doorgegeven. Als de Uitgever en de Abonnee niet verbonden zijn, kan de updatemodus worden aangepast zodat de gegevenswijzigingen die bij de Abonnee zijn aangebracht, in een wachtrij worden opgeslagen totdat de Abonnee en Uitgever weer verbonden zijn. Niet ondersteund door Oracle Publishers. |
queued failover |
Maakt het abonnement mogelijk als een gequeued update-abonnement met de mogelijkheid om over te schakelen naar onmiddellijke updatemodus. Datawijzigingen kunnen bij de abonnee worden uitgevoerd en in een wachtrij worden opgeslagen totdat er een verbinding is gelegd tussen de abonnee en de uitgever. Wanneer een continue verbinding tot stand is gekomen, kan de updatemodus worden omgezet naar onmiddellijke update. Niet ondersteund door Oracle Publishers. |
De waarden sync tran zijn queued tran niet toegestaan als de publicatie waarop je wordt geabonneerd DTS toestaat.
[ @loopback_detection = ] N'loopback_detection'
Geeft aan of de distributieagent transacties die bij de abonnee zijn ontstaan, terugstuurt naar de abonnee. @loopback_detection is nvarchar(5) en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
true |
De distributieagent stuurt geen transacties die bij de abonnee zijn gestart niet terug naar de abonnee. Gebruikt met bidirectionele transactionele replicatie. Zie Bidirectionele transactionele replicatie voor meer informatie. |
false |
De distributieagent stuurt transacties die bij de abonnee zijn ontstaan, terug naar de abonnee. |
NULL (standaard) |
Automatisch ingesteld op true voor een SQL Server-abonnee en false voor een niet-SQL Server-abonnee. |
[ @frequency_type = ] frequency_type
De frequentie waarmee de distributietaak wordt gepland. @frequency_type is int, en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
1 |
Eenmaal |
2 |
Op aanvraag |
4 |
Dagelijks |
8 |
Weekly |
16 |
Monthly |
32 |
Maandelijkse verwant |
64 (standaard) |
Autostart |
128 |
Terugkerend |
[ @frequency_interval = ] frequency_interval
De waarde die moet worden toegepast op de frequentie die door @frequency_type wordt ingesteld.
@frequency_interval is int, met als standaard .NULL
[ @frequency_relative_interval = ] frequency_relative_interval
De datum van de distributieagent. Deze parameter wordt gebruikt wanneer @frequency_type is ingesteld op 32 (maandelijkse relatieve).
@frequency_relative_interval is int, en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
1 |
Eerst |
2 |
Second |
4 |
Derde |
8 |
Vierde |
16 |
Laatste |
NULL (standaard) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
De door @frequency_type gebruikte recurrence factor
@frequency_recurrence_factor is int, met als standaard .NULL
[ @frequency_subday = ] frequency_subday
Hoe vaak, in enkele minuten, om te verplaatsen tijdens de vastgestelde periode? @frequency_subday is int, en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
1 |
Eenmaal |
2 |
Second |
4 |
Minute |
8 |
Uur |
NULL |
[ @frequency_subday_interval = ] frequency_subday_interval
De pauze voor @frequency_subday.
@frequency_subday_interval is int, met als standaard .NULL
[ @active_start_time_of_day = ] active_start_time_of_day
Het tijdstip waarop de Distributieagent voor het eerst wordt ingepland, opgemaakt als HHmmss.
@active_start_time_of_day is int, met als standaard .NULL
[ @active_end_time_of_day = ] active_end_time_of_day
Het tijdstip waarop de Distributieagent stopt met inplannen, geformatteerd als HHmmss.
@active_end_time_of_day is int, met als standaard .NULL
[ @active_start_date = ] active_start_date
De datum waarop de Distributieagent voor het eerst wordt ingepland, geformatteerd als yyyyMMdd.
@active_start_date is int, met een standaard van NULL.
[ @active_end_date = ] active_end_date
De datum waarop de Distributieagent stopt met het inplannen zijn, geformatteerd als yyyyMMdd.
@active_end_date is int, met als standaard .NULL
[ @optional_command_line = ] N'optional_command_line'
De optionele opdrachtprompt om uit te voeren.
@optional_command_line is nvarchar(4000), met een standaard van NULL.
[ @reserved = ] Niet gereserveerd'
Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Of het abonnement gesynchroniseerd kan worden via Windows Synchronization Manager.
@enabled_for_syncmgr is nvarchar(5), met een standaard van NULL, wat hetzelfde is als false. Als false, is het abonnement niet geregistreerd bij Windows Synchronization Manager. Als true, is het abonnement geregistreerd bij Windows Synchronization Manager en kan het worden gesynchroniseerd zonder SQL Server Management Studio te starten. Niet ondersteund door Oracle Publishers.
[ @offloadagent = ] aflaadmiddel
Geeft aan dat de agent op afstand geactiveerd kan worden.
@offloadagent is bit, met als standaard .0
Opmerking
Deze parameter is verouderd en wordt alleen behouden voor achterwaartse compatibiliteit van scripts.
[ @offloadserver = ] N'offloadserver'
Specificeert de netwerknaam van de server die gebruikt moet worden voor externe activatie.
@offloadserver is sysname, met als standaard .NULL
[ @dts_package_name = ] N'dts_package_name'
Specificeert de naam van het Data Transformation Services (DTS)-pakket.
@dts_package_name is systeemnaam, met als standaard .NULL Om bijvoorbeeld een pakket van DTSPub_Packagete specificeren, zou de parameter zijn @dts_package_name = N'DTSPub_Package'. Deze parameter is beschikbaar voor push-abonnementen. Om DTS-pakketinformatie toe te voegen aan een pull-abonnement, gebruik sp_addpullsubscription_agent.
[ @dts_package_password = ] N'dts_package_password'
Geeft het wachtwoord op het pakket, als dat er is.
@dts_package_password is een systeemnaam, met als standaard .NULL
Opmerking
Je moet een wachtwoord opgeven als @dts_package_name is opgegeven.
[ @dts_package_location = ] N'dts_package_location'
Specificeert de pakketlocatie.
@dts_package_location is nvarchar(12), met een standaard van NULL, wat hetzelfde is als distributor. De locatie van het pakket kan distributor of subscriber.
[ @distribution_job_name = ] N'distribution_job_name'
Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
[ @publisher = ] N'uitgever'
Specificeert een niet-SQL Server Publisher.
@publisher is sysname, met als standaard NULL.
Opmerking
@publisher zou niet gespecificeerd moeten worden voor een SQL Server Publisher.
[ @backupdevicetype = ] N'backupdevicetype'
Specificeert het type back-upapparaat dat wordt gebruikt bij het initialiseren van een abonnee vanuit een back-up. @backupdevicetype is nvarchar(20) en kan een van deze waarden zijn:
| Waarde | Description |
|---|---|
logical (standaard) |
Het back-upapparaat is een logisch apparaat |
disk |
Het back-upapparaat is de schijf |
tape |
Het back-upapparaat is een tapestation |
url |
Het back-upapparaat is een URL |
@backupdevicetype wordt alleen gebruikt wanneer @sync_method op initialize_with_backup is ingesteld.
[ @backupdevicename = ] N'back-upapparaatnaam'
Specificeert de naam van het apparaat dat wordt gebruikt bij het initialiseren van een abonnee vanuit een back-up.
@backupdevicename is nvarchar(1000), met een standaard van NULL.
[ @mediapassword = ] N'mediapassword'
Specificeert een wachtwoord voor de mediaset als een wachtwoord werd ingesteld bij het opmaken van de media.
@mediapassword is sysname, met als standaard .NULL
Opmerking
Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.
[ @password = ] N'wachtwoord'
Specificeert een wachtwoord voor de back-up als een wachtwoord werd ingesteld bij het maken van de back-up.
@password is sysname, met een standaardwaarde van NULL.
[ @fileidhint = ] fileidhint
Identificeert een ordinaal aantal van de back-up die wordt hersteld.
@fileidhint is int, met een standaard van NULL.
[ @unload = ] lossen
Geeft aan of een tape-back-up apparaat moet worden ontladen nadat de initialisatie van achteren is voltooid.
@unload is bit, met een standaard van 1, die aangeeft dat de tape moet worden ontladen.
@unload wordt alleen gebruikt wanneer @backupdevicetype .tape
[ @subscriptionlsn = ] subscriptionlsn
Specificeert het log-sequentienummer (LSN) waarop een abonnement wijzigingen moet beginnen te leveren aan een knoop in een peer-to-peer transactionele replicatietopologie.
@subscriptionlsn is binair(10), met als standaard .NULL Gebruikt met een @sync_type waarde van initialize from lsn om ervoor te zorgen dat alle relevante transacties worden gerepliceerd naar een nieuwe node. Voor meer informatie, zie Peer-to-Peer - Transactionele Replicatie.
[ @subscriptionstreams = ] abonnementsstromen
Het aantal verbindingen dat per distributieagent is toegestaan om batches van wijzigingen parallel toe te passen op een abonnee, terwijl veel van de transactionele kenmerken aanwezig blijven wanneer één thread wordt gebruikt.
@subscriptionstreams is tinyint, met een standaard van NULL. Een bereik van waarden van 1 tot 64 wordt ondersteund. Deze parameter wordt niet ondersteund voor niet-SQL Server-abonnees, Oracle Publishers of peer-to-peer abonnementen. Telkens wanneer @subscriptionstreams wordt gebruikt, worden extra rijen toegevoegd aan de msreplication_subscriptions tabel (één rij per stroom) met een agent_id set op NULL.
Opmerking
Abonnementsstromen werken niet voor artikelen die zijn geconfigureerd om Transact-SQL te leveren. Als u abonnementsstreams wilt gebruiken, configureert u in plaats daarvan artikelen voor het leveren van opgeslagen procedureoproepen.
[ @subscriber_type = ] subscriber_type
Het type abonnee. @subscriber_type is heel klein en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
0 (standaard) |
SQL Server-abonnee |
1 |
ODBC databronserver |
2 |
Microsoft Jet-database |
3 |
OLE DB-provider |
[ @memory_optimized = ] memory_optimized
Geeft aan dat het abonnement geheugengeoptimaliseerde tabellen ondersteunt.
@memory_optimized is bit, met een standaard van 0 (false).
1 (waar) betekent dat het abonnement geheugengeoptimaliseerde tabellen ondersteunt.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Opmerkingen
sp_addsubscription wordt gebruikt bij snapshotreplicatie en transactionele replicatie.
Wanneer sp_addsubscription wordt uitgevoerd door een lid van de sysadmin fixed server-rol om een push-abonnement aan te maken, wordt de Distribution Agent-taak impliciet aangemaakt en draait deze onder het SQL Server Agent-serviceaccount. We raden aan dat u sp_addpushsubscription_agent uitvoert en de inloggegevens specificeert van een ander, agent-specifiek Windows-account voor @job_login en @job_password. Zie Replication Agent Security Modelvoor meer informatie.
sp_addsubscription voorkomt toegang van ODBC- en OLE DB-abonnees tot publicaties die:
Werden gecreëerd met de inheemse @sync_method in de roep om sp_addpublication.
Bevat artikelen die aan de publicatie zijn toegevoegd met de sp_addarticle opgeslagen procedure die een @pre_creation_cmd parameterwaarde van 3 had (afsnijden).
Probeer @update_mode in te stellen op
sync tran.Laat een artikel geconfigureerd om geparametriseerde statements te gebruiken.
Daarnaast, als een publicatie de optie @allow_queued_tran op waar heeft gezet (wat het mogelijk maakt wijzigingen bij de abonnee in de rij te wachten totdat ze bij de uitgever kunnen worden toegepast), wordt de tijdstempelkolom in een artikel als tijdstempel gescript en worden wijzigingen in die kolom naar de abonnee gestuurd. De abonnee genereert en werkt de tijdstempelkolom bij. Voor een ODBC- of OLE DB-abonnee sp_addsubscription mislukt het als er een poging wordt gedaan om zich te abonneren op een publicatie die @allow_queued_tran op waar heeft gezet en artikelen met tijdstempelkolommen erin heeft.
Als een abonnement geen DTS-pakket gebruikt, kan het zich niet abonneren op een publicatie die op @allow_transformable_subscriptions staat. Als de tabel van de publicatie moet worden gerepliceerd naar zowel een DTS-abonnement als een niet-DTS-abonnement, moeten er twee aparte publicaties worden aangemaakt: één voor elk type abonnement.
Bij het selecteren van de sync_type opties replication support only, initialize with backup, of initialize from lsn, moet de loglezeragent na sp_addsubscriptionuitvoering draaien, zodat de setup-scripts naar de distributiedatabase worden geschreven. De logboeklezeragent moet worden uitgevoerd onder een account dat lid is van de vaste serverfunctie sysadmin . Wanneer de @sync_type-optie is ingesteld op Automatic, zijn er geen speciale acties van de log reader agent nodig.
Permissions
Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_addsubscription. Voor pull-abonnementen kunnen gebruikers met inloggegevens in de publicatietoegangslijst uitvoeren sp_addsubscription.
Voorbeelden
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2022Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2022]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO