Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
Přidává předplatné publikace a nastavuje status odběratele. Tato uložená procedura se spustí v Publisheru v databázi publikace.
Syntaxe
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'publikace'
Název publikace. @publication je sysname, bez výchozího nastavení.
[ @article = ] N'článek'
Článek, na který je publikace předplacena.
@article je sysname s výchozím nastavením all. Pokud all, je ke všem článkům v dané publikaci přidáno předplatné. Pouze hodnoty nebo allNULL jsou podporovány pouze pro Oracle Publishers.
[ @subscriber = ] N'subscriber'
Název odběratele.
@subscriber je sysname s výchozím nastavením NULL.
Poznámka:
Název serveru lze zadat jako <Hostname>,<PortNumber> výchozí instanci nebo <Hostname>\<InstanceName>,<PortNumber> pro pojmenovanou instanci. Zadejte číslo portu pro vaše připojení, když je SQL Server nasazen v Linuxu nebo Windows s vlastním portem a služba prohlížeče je zakázaná. Použití vlastních čísel portů pro vzdáleného distributora platí pro SQL Server 2019 (15.x) a novější verze.
[ @destination_db = ] N'destination_db'
Název cílové databáze, do které se ukládají replikovaná data.
@destination_db je sysname s výchozím nastavením NULL. Když NULL, @destination_db je nastaveno na název databáze publikace. Pro Oracle Publishers je třeba @destination_db specifikovat. Pro předplatitele mimo SQL Server zadejte hodnotu (výchozí cíl) pro @destination_db.
[ @sync_type = ] N'sync_type'
Typ synchronizace předplatného. @sync_type je nvarchar(255) a může mít jednu z následujících hodnot:
| Hodnota | Description |
|---|---|
none
1 |
Subscriber už má schéma a počáteční data pro publikované tabulky. |
automatic (výchozí) |
Schéma a počáteční data pro publikované tabulky jsou nejprve přenášena předplatiteli. |
replication support only
2 |
Poskytuje automatickou generaci vlastních uložených procedur a spouštěčů článků u odběratele, které podporují aktualizaci odběrů, pokud je to vhodné. Předpokládá, že předplatitel již má schéma a počáteční data pro publikované tabulky. Při konfiguraci peer-to-peer transakční replikační topologie je třeba zajistit, aby data ve všech uzlech topologie byla identická. Pro více informací viz Peer-to-Peer – Transakční replikace. |
initialize with backup
2 |
Schéma a počáteční data pro publikované tabulky jsou získávána ze zálohy publikační databáze. Předpokládá, že předplatitel má přístup k záložní záložní databázi publikace. Umístění zálohy a typ média pro zálohu jsou specifikovány @backupdevicename a @backupdevicetype. Při použití této možnosti není třeba během konfigurace vypnout peer-to-peer transakční replikační topologii. |
initialize from lsn |
Používá se, když přidáváte uzel do peer-to-peer transakční replikační topologie. Používá se k @subscriptionlsn zajištění, že všechny relevantní transakce jsou replikovány na nový uzel. Předpokládá, že předplatitel již má schéma a počáteční data pro publikované tabulky. Pro více informací viz Peer-to-Peer – Transakční replikace. |
1 Tato možnost byla zrušena. Používejte pouze podporu replikace.
2 Není podporováno pro předplatné publikací mimo SQL Server.
Poznámka:
Systémové tabulky a data jsou vždy přenášena.
[ @status = ] N'status'
Stav předplatného.
@status je sysname s výchozím nastavením NULL. Pokud tento parametr není explicitně nastaven, replikace jej automaticky nastaví na jednu z těchto hodnot.
| Hodnota | Description |
|---|---|
active |
Předplatné je inicializováno a připraveno přijímat změny. Tato možnost se nastaví, když hodnota @sync_type je nula, inicializace se zálohou nebo pouze podporou replikace. |
subscribed |
Předplatné musí být inicializováno. Tato možnost se nastavuje, když je hodnota @sync_type automatická. |
[ @subscription_type = ] N'subscription_type'
Typ předplatného.
@subscription_type je nvarchar(4), s výchozím hodnotou push. Může být push nebo pull. Distribuční agenti push předplatného sídlí u distributora a distribuční agenti pull předplatného u předplatitele.
@subscription_type může být pull vytvoření pojmenovaného pull předplatného, které je známé vydavateli. Pro více informací viz Přihlásit se k odběru publikací.
Poznámka:
Anonymní odběry nemusí používat tuto uloženou proceduru.
[ @update_mode = ] N'update_mode'
Typ aktualizace. @update_mode je nvarchar(30) a může být jednou z těchto hodnot.
| Hodnota | Description |
|---|---|
read only (výchozí) |
Předplatné je jen pro čtení. Změny na Subscriber nejsou odesílány vydavateli. |
sync tran |
Umožňuje podporu okamžité aktualizace předplatného. Oracle Publishers to nepodporuje. |
queued tran |
Umožňuje předplatné pro aktualizace ve frontě. Úpravy dat lze provádět u odběratele, uložit do fronty a následně je předat vydavateli. Oracle Publishers to nepodporuje. |
failover |
Umožňuje okamžité aktualizace předplatného s aktualizací ve frontě jako failover. Úpravy dat lze provádět u předplatitele a ihned je předat vydavateli. Pokud nejsou vydavatel a předplatitel propojeni, lze změnit režim aktualizace tak, aby úpravy dat provedené u předplatitele byly uloženy ve frontě, dokud nejsou předplatitel a vydavatel znovu propojeni. Oracle Publishers to nepodporuje. |
queued failover |
Umožňuje předplatné jako frontové aktualizované předplatné s možností přepnout na režim okamžité aktualizace. Úpravy dat lze provádět u předplatitele a ukládat je do fronty, dokud není navázáno spojení mezi předplatitelem a vydavatelem. Když je navázáno nepřetržité spojení, režim aktualizace lze změnit na okamžité aktualizace. Oracle Publishers to nepodporuje. |
Hodnoty sync tran a queued tran nejsou povoleny, pokud publikace, na kterou jste odebíráni, umožňuje DTS.
[ @loopback_detection = ] N'loopback_detection'
Specifikuje, zda distribuční agent posílá transakce, které pocházejí z odběratele, zpět k odběrateli. @loopback_detection je nvarchar(5) a může být jednou z těchto hodnot.
| Hodnota | Description |
|---|---|
true |
Distribuční agent neposílá transakce vzniklé u Odběratele zpět Odběrateli. Používá se s obousměrnou transakční replikací. Další informace naleznete v tématu Obousměrná transakční replikace. |
false |
Distribuční agent posílá transakce, které vznikly u Odběratele, zpět Předplatiteli. |
NULL (výchozí) |
Automaticky nastaveno na true pro SQL Server Subscriber a false pro uživatele bez SQL Serveru. |
[ @frequency_type = ] frequency_type
Frekvence, s jakou plánovat distribuční úkol. @frequency_type je int a může být jednou z těchto hodnot.
| Hodnota | Description |
|---|---|
1 |
Jednou |
2 |
Na vyžádání |
4 |
Každý den |
8 |
Weekly |
16 |
Monthly |
32 |
Měsíční příbuzný |
64 (výchozí) |
Autostart |
128 |
Opakovaná platba |
[ @frequency_interval = ] frequency_interval
Hodnota se vztahuje na frekvenci nastavenou @frequency_type.
@frequency_interval je int, s výchozím nastavením NULL.
[ @frequency_relative_interval = ] frequency_relative_interval
Datum distribučního agenta. Tento parametr se používá, když je @frequency_type nastaveno na 32 (měsíční relativní).
@frequency_relative_interval je int a může být jednou z těchto hodnot.
| Hodnota | Description |
|---|---|
1 |
First |
2 |
Second |
4 |
Třetí |
8 |
Čtvrtý |
16 |
Poslední |
NULL (výchozí) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
Faktor opakování používaný @frequency_type.
@frequency_recurrence_factor je int, s výchozím hodnotou NULL.
[ @frequency_subday = ] frequency_subday
Jak často, v minutách, přeplánovat během definovaného období. @frequency_subday je int a může být jednou z těchto hodnot.
| Hodnota | Description |
|---|---|
1 |
Jednou |
2 |
Second |
4 |
Minute |
8 |
Hodina |
NULL |
[ @frequency_subday_interval = ] frequency_subday_interval
Přestávka na @frequency_subday.
@frequency_subday_interval je int, s výchozím nastavením NULL.
[ @active_start_time_of_day = ] active_start_time_of_day
Denní doba, kdy je distribuční agent poprvé naplánován, formátovaná jako HHmmss.
@active_start_time_of_day je int, s výchozím nastavením NULL.
[ @active_end_time_of_day = ] active_end_time_of_day
Denní doba, kdy distribuční agent přestává být plánován, formátovaná jako HHmmss.
@active_end_time_of_day je int, s výchozím hodnotou NULL.
[ @active_start_date = ] active_start_date
Datum, kdy je distribuční agent poprvé naplánován, formátováno jako yyyyMMdd.
@active_start_date je int, s výchozím nastavením NULL.
[ @active_end_date = ] active_end_date
Datum, kdy distribuční agent přestane být plánován, formátováno jako yyyyMMdd.
@active_end_date je int, s výchozím nastavením NULL.
[ @optional_command_line = ] N'optional_command_line'
Volitelné příkazové řádky pro spustění.
@optional_command_line je nvarchar(4000), s výchozím hodnotou NULL.
[ @reserved = ] N'rezervováno'
Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Zda lze předplatné synchronizovat přes Windows Synchronization Manager.
@enabled_for_syncmgr je nvarchar(5), s výchozím , NULLcož je stejné jako false. Pokud false, předplatné není registrováno ve Windows Synchronization Manager. Pokud true, předplatné je registrováno ve Windows Synchronization Manager a lze ho synchronizovat bez nutnosti spouštět SQL Server Management Studio. Oracle Publishers to nepodporuje.
[ @offloadagent = ] offloadagent
Specifikuje, že agent může být aktivován na dálku.
@offloadagent je bit, s výchozím hodnotou 0.
Poznámka:
Tento parametr byl zrušen a je udržován pouze kvůli zpětné kompatibilitě skriptů.
[ @offloadserver = ] N'offloadserver
Specifikuje síťové jméno serveru, který má být použit pro vzdálenou aktivaci.
@offloadserver je sysname s výchozím nastavením NULL.
[ @dts_package_name = ] N'dts_package_name'
Specifikuje název balíčku Data Transformation Services (DTS).
@dts_package_name je sysname s výchozím nastavením NULL. Například pro specifikaci balíčku , DTSPub_Packageparametrem by byl @dts_package_name = N'DTSPub_Package'. Tento parametr je dostupný pro push předplatné. Pro přidání informací o DTS balíčku do pull předplatného použijte sp_addpullsubscription_agent.
[ @dts_package_password = ] N'dts_package_password'
Na balení je uvedeno heslo, pokud nějaké je.
@dts_package_password je sysname s výchozím nastavením NULL.
Poznámka:
Pokud je uvedeno , musíte zadat heslo@dts_package_name je uvedeno.
[ @dts_package_location = ] N'dts_package_location'
Specifikuje umístění balíčku.
@dts_package_location je nvarchar(12), s výchozím , NULLcož je stejné jako distributor. Umístění balíčku může být distributor nebo subscriber.
[ @distribution_job_name = ] N'distribution_job_name'
Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.
[ @publisher = ] N'publisher'
Specifikuje vydavatele mimo SQL Server.
@publisher je sysname s výchozím nastavením NULL.
Poznámka:
@publisher by nemělo být specifikováno pro SQL Server Publisher.
[ @backupdevicetype = ] N'backupdevicetype'
Specifikuje typ záložního zařízení použitého při inicializaci účastníka ze zálohy. @backupdevicetype je nvarchar(20) a může být jednou z těchto hodnot:
| Hodnota | Description |
|---|---|
logical (výchozí) |
Záložní zařízení je logické zařízení |
disk |
Záložním zařízením je disková jednotka |
tape |
Záložním zařízením je pásková mechanika |
url |
Záložním zařízením je URL |
@backupdevicetype se používá pouze tehdy, když je @sync_method nastaveno na initialize_with_backup.
[ @backupdevicename = ] N'backupdevicename'
Specifikuje název zařízení použitého při inicializaci účastníka ze zálohy.
@backupdevicename je nvarchar(1000), s výchozím hodnotou NULL.
[ @mediapassword = ] N'mediapassword'
Specifikuje heslo pro sadu médií, pokud bylo heslo nastaveno při formátování média.
@mediapassword je sysname s výchozím nastavením NULL.
Poznámka:
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.
[ @password = ] N'password'
Specifikuje heslo pro zálohu, pokud bylo heslo nastaveno při vytváření zálohy.
@password je sysname, s výchozím nastavením NULL.
[ @fileidhint = ] fileidhint
Identifikuje ordinální hodnotu zálohovací množiny, která má být obnovena.
@fileidhint je int, s výchozím nastavením NULL.
[ @unload = ] vykládat
Specifikuje, zda by mělo být zařízení pro zálohování pásky po dokončení inicializace zpět odpojeno.
@unload je bit, s výchozím nastavením 1, což určuje, že páska by měla být vyložena.
@unload se používá pouze tehdy, když @backupdevicetype je .tape
[ @subscriptionlsn = ] subscriptionlsn
Specifikuje logární sekvenční číslo (LSN), při kterém by předplatné mělo začít doručovat změny uzlu v peer-to-peer transakční replikační topologii.
@subscriptionlsn je binární(10), s výchozím nastavením NULL. Používá se s @sync_type hodnotou k initialize from lsn zajištění, že všechny relevantní transakce jsou replikovány na nový uzel. Pro více informací viz Peer-to-Peer – Transakční replikace.
[ @subscriptionstreams = ] subscriptionstreams
Počet připojení povolených pro každého distribučního agenta k použití dávek změn paralelně pro odběratele a zachování mnoha transakčních charakteristik, které jsou přítomné při použití jednoho vlákna.
@subscriptionstreams je tinyint, s výchozím nastavením NULL. Podporuje se rozsah hodnot od 1 do 64 . Tento parametr není podporován pro ne-SQL Server předplatitele, Oracle Publishers ani peer-to-peer předplatné. Kdykoli se použije @subscriptionstreams , do tabulky msreplication_subscriptions se přidávají další řádky (jeden řádek na proud) s množinou agent_id na NULL.
Poznámka:
Streamy předplatného nefungují pro články nakonfigurované tak, aby doručovaly transact-SQL. Pokud chcete používat streamy předplatného, nakonfigurujte články tak, aby místo toho doručily volání uložených procedur.
[ @subscriber_type = ] subscriber_type
Typ předplatitele. @subscriber_type je malý a může být jednou z těchto hodnot.
| Hodnota | Description |
|---|---|
0 (výchozí) |
SQL Server Subscriber |
1 |
ODBC zdrojový server dat |
2 |
Databáze Microsoft Jet |
3 |
zprostředkovatel OLE DB |
[ @memory_optimized = ] memory_optimized
Označuje, že předplatné podporuje tabulky optimalizované pro paměť.
@memory_optimized je bit, s výchozím nastavením ( 0 false).
1 (true) znamená, že předplatné podporuje tabulky optimalizované pro paměť.
Hodnoty návratového kódu
0 (úspěch) nebo 1 (selhání).
Poznámky
sp_addsubscription se používá při replikaci snapshotů a transakční replikaci.
Když sp_addsubscription je spuštěna členem role pevného serveru správce systému za účelem vytvoření push předplatného, úloha Distribučního agenta je implicitně vytvořena a spustena pod účtem služby SQL Server Agent. Doporučujeme spustit sp_addpushsubscription_agent a zadat přihlašovací údaje jiného, agentu specifického Windows účtu pro @job_login a @job_password. Další informace naleznete v tématu Model zabezpečení agenta replikace.
sp_addsubscription brání předplatitelům ODBC a OLE DB přístup k publikacím, které:
Byly vytvořeny s domorodým @sync_method ve výzvě k sp_addpublication.
Obsahovat články přidány do publikace pomocí sp_addarticle uložené procedury, která měla hodnotu parametru @pre_creation_cmd 3 (zkrátit).
Pokuste se nastavit @update_mode na
sync tran.Mějte článek nastavený tak, aby používal parametrizované výroky.
Navíc, pokud má publikace možnost @allow_queued_tran nastavenou na true (což umožňuje frontu změn u odběratele, dokud je nelze aplikovat u vydavatele), sloupec časového razítka v článku je vypsán jako časové razítko a změny v tomto sloupci jsou odesílány odběrateli. Odběratel generuje a aktualizuje hodnotu sloupce časového razítka. Pro předplatitele ODBC nebo OLE DB selže, sp_addsubscription pokud se pokusí odebrat publikaci, která má nastavené @allow_queued_tran na true a články s časovými značkami.
Pokud předplatné nepoužívá DTS balíček, nemůže se přihlásit k publikaci, která je nastavena na @allow_transformable_subscriptions. Pokud je třeba tabulku z publikace replikovat jak pro DTS předplatné, tak pro ne-DTS předplatné, je třeba vytvořit dvě samostatné publikace: jednu pro každý typ předplatného.
Při výběru sync_type možností replication support only, initialize with backup, initialize from lsnnebo , musí po spuštění sp_addsubscriptionspustit agent čtečky logů, aby byly nastavovací skripty zapsány do distribuční databáze. Agent čtenáře protokolu musí být spuštěný pod účtem, který je členem pevné role serveru správce systému . Když je volba @sync_type nastavena na Automatic, nejsou potřeba žádné speciální akce agenta čtečky logů.
Povolení
Pouze členové role pevného serveru správce systému nebo role pevné databáze db_owner mohou vykonávat sp_addsubscription. Pro pull odběry mohou uživatelé s přihlaškováním v seznamu přístupu k publikaci spustit sp_addsubscription.
Examples
-- 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
Související obsah
- Vytvoření nabízeného předplatného
- Vytvořte předplatné pro uživatele bez SQL Serveru
- Přihlásit se k odběru publikací
- sp_addpushsubscription_agent (Transact-SQL)
- sp_changesubstatus (Transact-SQL)
- sp_dropsubscription (Transact-SQL)
- sp_helpsubscription (Transact-SQL)
- uložené procedury systému (Transact-SQL)