Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Előfizetést ad egy kiadványhoz és beállítja az Előfizető státuszt. Ezt a tárolt eljárást a publisher a közzétételi adatbázisban hajtja végre.
Transact-SQL szintaxis konvenciók
Szemantika
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'publication'
A kiadvány neve. @publicationa sysname, alapértelmezett nélkül.
[ @article = ] N'article'
Az a cikk, amelyhez a kiadvány feliratkozott.
@article a sysname, alapértelmezettként all. Ha all, előfizetést adnak hozzá az adott kiadvány összes cikkéhez. Csak az all vagy NULL értékek támogatottak az Oracle Publishers számára.
[ @subscriber = ] N'előfizető
Az előfizető neve.
@subscriber a sysname, alapértelmezettként NULL.
Megjegyzés:
A kiszolgáló neve megadható alapértelmezett példányként <Hostname>,<PortNumber> vagy <Hostname>\<InstanceName>,<PortNumber> névvel ellátott példányként. Adja meg a kapcsolat portszámát, ha az SQL Server linuxos vagy windowsos egyéni porton van üzembe helyezve, és a böngészőszolgáltatás le van tiltva. A távoli terjesztő egyéni portszámainak használata az SQL Server 2019 (15.x) és újabb verzióira vonatkozik.
[ @destination_db = ] N'destination_db'
A célállomás adatbázis neve, amelybe a replikált adatokat kell elhelyezni.
@destination_db a sysname, alapértelmezetként NULL. Amikor NULL, @destination_db a publikációs adatbázis nevének van beállítva. Az Oracle Publishers esetében @destination_db meg kell határozni. Nem SQL Server előfizető esetén adj meg egy értéket (alapértelmezett célpont) @destination_db-re.
[ @sync_type = ] N'sync_type'
Az előfizetéses szinkronizáció típusa. @sync_typenvarchar(255), és lehet az alábbi értékek egyike:
| Érték | Description |
|---|---|
none
1 |
Az előfizető már rendelkezik a sémával és a kezdeti adatokkal a közzétett táblákhoz. |
automatic (alapértelmezett) |
A közzétett táblák sémáját és kezdeti adatait először az Előfizetőhöz továbbítják. |
replication support only
2 |
Automatikus előfizetőnél generálja a cikket egyedi tárolt eljárásokról és triggerekről, amelyek szükség esetén támogatják az előfizetések frissítését. Feltételezi, hogy az Előfizető már rendelkezik a sémával és az eredeti adatokkal a közzétett táblákhoz. Peer-to-peer tranzakciós replikációs topológiát konfigurálásakor győződjön meg róla, hogy az összes csomópont adatai azonosak legyenek. További információért lásd: Peer-to-Peer - Transactional Replication. |
initialize with backup
2 |
A közzétett táblázatokhoz vonatkozó séma és kezdeti adatok a publikációs adatbázis biztonsági mentéséből származnak. Feltételezi, hogy az előfizető hozzáfér a kiadvány adatbázisának biztonsági mentéséhez. A biztonsági mentés helyét és a biztonsági mentés médiatípusát @backupdevicename és @backupdevicetype határozza meg. E opció használatakor a peer-to-peer tranzakciós replikációs topológiát nem kell leállítani a konfiguráció során. |
initialize from lsn |
Akkor használjuk, amikor egy csomópontot hozzáadsz egy peer-to-peer tranzakciós replikációs topológiához. Azt arra @subscriptionlsn használom, hogy biztosítsam, minden releváns tranzakció replikált az új csomópontra. Feltételezi, hogy az Előfizető már rendelkezik a sémával és az eredeti adatokkal a közzétett táblákhoz. További információért lásd: Peer-to-Peer - Transactional Replication. |
1 Ez az opció már elfogyott. Használj inkább csak replikációs támogatást.
2 Nem támogatott nem SQL Server kiadványokra való előfizetéseknél.
Megjegyzés:
A rendszertáblák és adatok mindig átkerülnek.
[ @status = ] N'status'
Az előfizetési státusz.
@status a sysname, alapértelmezettként NULL. Ha ez a paraméter nincs explicit módon beállítva, a replikáció automatikusan beállítja az értékek egyikére.
| Érték | Description |
|---|---|
active |
Az előfizetés indult és készen áll a változtatások elfogadására. Ez az opció akkor állítható be, ha @sync_type értéke nincs, inicializálható biztonsági mentéssel vagy csak replikációs támogatással. |
subscribed |
Az előfizetést indítani kell. Ez az opció akkor állítható be, ha @sync_type értéke automatikus. |
[ @subscription_type = ] N'subscription_type'
Az előfizetés típusa.
@subscription_typenvarchar(4), alapértelmezett értéke push. Lehet push vagy pull. A push előfizetések Terjesztési Ügynökei a Forgalmazónál találhatók, a pull előfizetések Terjesztési Ügynökei pedig az Előfizetőnél.
@subscription_typepull lehet egy nevelt pull előfizetés létrehozása, amelyet a Kiadó ismer. További információért lásd: Iratkozz fel a Publikációkra.
Megjegyzés:
Az anonim előfizetéseknek nem kell ezt a tárolt eljárást használniuk.
[ @update_mode = ] N'update_mode'
A frissítés típusa. @update_modenvarchar(30), és lehet ezek közül az értékek.
| Érték | Description |
|---|---|
read only (alapértelmezett) |
Az előfizetés írásvédett. A Feliratkozónál a változásokat nem küldik el a Kiadónak. |
sync tran |
Lehetővé teszi az azonnali frissítési előfizetések támogatását. Nem támogatott az Oracle Publishers esetében. |
queued tran |
Lehetővé teszi az előfizetést a sorban lévő frissítéshez. Az adatmódosítások a Feliratkozó által elvégezhetők, sorban tárolhatók, majd továbbíthatók a Kiadónak. Nem támogatott az Oracle Publishers esetében. |
failover |
Lehetővé teszi az előfizetés azonnali frissítését, sorban lévő frissítéssel a failoverként. Az adatmódosításokat az Előfizetőnél lehet elvégezni, és azonnal továbbítani a Kiadónak. Ha a Kiadó és az Előfizető nincs összekapcsolva, a frissítési mód megváltoztatható úgy, hogy az Előfizetőnél végzett adatmódosítások sorban maradjanak, amíg az Előfizető és a Kiadó újra össze nem kapcsolódnak. Nem támogatott az Oracle Publishers esetében. |
queued failover |
Lehetővé teszi az előfizetést sorban lévő frissítő előfizetésként, azonnali frissítési módra váltva. Az adatmódosítások az Előfizetőnél elvégezhetők és sorban tárolhatók, amíg kapcsolat nem jön létre az Előfizető és a Kiadó között. Ha folyamatos kapcsolat létrejött, a frissítési mód azonnali frissítésre váltható. Nem támogatott az Oracle Publishers esetében. |
Az értékek sync tran és queued tran nem engedélyezettek, ha az előfizető kiadvány engedélyezi a DTS-t.
[ @loopback_detection = ] N'loopback_detection'
Megadja, hogy a Forgalmazó Ügynök visszaküldi-e az Előfizetőtől származó tranzakciókat az Előfizetőnek. @loopback_detectionnvarchar(5), és lehet ezek közül az értékek.
| Érték | Description |
|---|---|
true |
A Terjesztési Ügynök nem küldi vissza az Előfizetőtől származó tranzakciókat az Előfizetőnek. Kétirányú tranzakciós replikációval használják. További információ: Kétirányú tranzakciós replikáció. |
false |
A Disztribúciós Ügynök visszaküldi az Előfizetőtől származó tranzakciókat az Előfizetőnek. |
NULL (alapértelmezett) |
Automatikusan állítják true egy SQL Server előfizető esetén, a nem SQL Server előfizető esetén pedig hamisnak. |
[ @frequency_type = ] frequency_type
A kiosztási feladat ütemezésének gyakorisága. @frequency_typeint, és lehet ezek közül az értékek.
| Érték | Description |
|---|---|
1 |
Egyszer |
2 |
Igény szerint |
4 |
Mindennapi |
8 |
Weekly |
16 |
Monthly |
32 |
Havi rokon |
64 (alapértelmezett) |
Automatikus indítás |
128 |
előfizetés |
[ @frequency_interval = ] frequency_interval
Az érték, amelyet a @frequency_type által beállított frekvenciára alkalmazzák.
@frequency_intervalint, alapértelmezés NULLszerint .
[ @frequency_relative_interval = ] frequency_relative_interval
A Forgalmazó Ügynök dátuma. Ezt a paramétert akkor használják, amikor @frequency_type (havi relatív állapot) értékre van állítva 32 .
@frequency_relative_intervalint, és lehet ezek közé az értékek.
| Érték | Description |
|---|---|
1 |
First |
2 |
Second |
4 |
Harmadik |
8 |
Negyedik |
16 |
Utolsó |
NULL (alapértelmezett) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
A @frequency_type által használt visszatérési tényező.
@frequency_recurrence_factorint, alapértelmezés szerint NULL.
[ @frequency_subday = ] frequency_subday
Hányszor vagy percekben lehet átütemezni a meghatározott időszakban. @frequency_subdayint, és lehet ezek közé az értékek.
| Érték | Description |
|---|---|
1 |
Egyszer |
2 |
Second |
4 |
Minute |
8 |
Óra |
NULL |
[ @frequency_subday_interval = ] frequency_subday_interval
A @frequency_subday szünet.
@frequency_subday_intervalint, alapértelmezés NULL.
[ @active_start_time_of_day = ] active_start_time_of_day
Az a napszak, amikor a Forgalmazó Ügynök először beütemezik, formázva.HHmmss
@active_start_time_of_dayint, alapértelmezettként NULL.
[ @active_end_time_of_day = ] active_end_time_of_day
Az a napszak, amikor a Forgalmazó Ügynök megszűnik az ütemezés, formázva .HHmmss
@active_end_time_of_dayint, alapértelmezettként NULL.
[ @active_start_date = ] active_start_date
Az a dátum, amikor a Forgalmazó Ügynök először ütemezik, formázva .yyyyMMdd
@active_start_dateint, alapértelmezés NULL.
[ @active_end_date = ] active_end_date
Az a dátum, amikor a Terjesztési Ügynök megszűnik az ütemezés, formázva .yyyyMMdd
@active_end_dateint, alapértelmezettként NULL.
[ @optional_command_line = ] N'optional_command_line'
Az opcionális parancssor, amit végrehajthatunk.
@optional_command_linenvarchar(4000), alapértelmezett értéke NULL.
[ @reserved = ] N'reserved'
Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Hogy az előfizetés szinkronizálható-e a Windows Synchronization Manager-en keresztül.
@enabled_for_syncmgrnvarchar(5), alapértelmezett értékével NULL, ami ugyanaz, mint false. Ha false, az előfizetés nincs regisztrálva a Windows Synchronization Manager-ben. Ha true, az előfizetés regisztrált a Windows Synchronization Manager-ben, és szinkronizálható anélkül, hogy elindítaná az SQL Server Management Studio-t. Nem támogatott az Oracle Publishers esetében.
[ @offloadagent = ] Leterelőügynök
Megadja, hogy az ügynök távolról is aktiválható.
@offloadagentbit, alapértelmezettként 0.
Megjegyzés:
Ez a paraméter már elavult, és csak a scriptek visszafelé kompatibilitása érdekében tartják fenn.
[ @offloadserver = ] N'offloadserver'
Megadja a távoli aktiváláshoz használt szerver hálózati nevét.
@offloadservera sysname, alapértelmezés NULLszerint .
[ @dts_package_name = ] N'dts_package_name'
Megadja az Adattranszformációs Szolgáltatások (DTS) csomag nevét.
@dts_package_namea sysname, alapértelmezettként NULL. Például, ha egy csomagot meg akarunk DTSPub_Packagehatározni, a paraméter .@dts_package_name = N'DTSPub_Package' Ez a paraméter elérhető push előfizetésekhez. A DTS csomag adatainak hozzáadásához a pull előfizetéshez használd sp_addpullsubscription_agent.
[ @dts_package_password = ] N'dts_package_password'
Megadja a csomagon lévő jelszót, ha van ilyen.
@dts_package_password a sysname, alapértelmezettként NULL.
Megjegyzés:
Ha @dts_package_name meg van adva, jelszót kell megadnod.
[ @dts_package_location = ] N'dts_package_location'
Megadja a csomag helyét.
@dts_package_locationnvarchar(12), alapértelmezett értéke NULL, ami megegyezik .distributor A csomag helye lehet distributor vagy subscriber.
[ @distribution_job_name = ] N'distribution_job_name'
Csak tájékoztatási célokra van meghatározva. Nem támogatott. A jövőbeli kompatibilitás nem garantált.
[ @publisher = ] N'publisher'
Nem SQL Server Publishert jelöl meg.
@publisher a sysname, alapértelmezettként NULL.
Megjegyzés:
@publisher nem szabad megadni egy SQL Server Publisher esetében.
[ @backupdevicetype = ] N'backupdevicetype'
Megadja a biztonsági mentési eszköz típusát, amelyet az előfizető biztonsági mentésből való inicializálásakor. @backupdevicetypenvarchar(20), és lehet az alábbi értékek egyike:
| Érték | Description |
|---|---|
logical (alapértelmezett) |
A biztonsági mentési eszköz logikai eszköz |
disk |
A biztonsági mentési eszköz a lemezmeghajtó |
tape |
A biztonsági mentési eszköz egy szalagos meghajtó |
url |
A biztonsági mentési eszköz egy URL |
@backupdevicetype csak akkor használatos, ha @sync_method initialize_with_backup-re van állítva.
[ @backupdevicename = ] N'backupdevicename'
Megadja az eszköz nevét, amelyet az előfizető biztonsági mentésből való inicializáláskor használnak.
@backupdevicenamenvarchar(1000), alapértelmezett értéke NULL.
[ @mediapassword = ] N'mediapassword'
Megadja a média jelszavát, ha jelszó a média formázásakor volt beállítva.
@mediapassword a sysname, alapértelmezettként NULL.
Megjegyzés:
Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
[ @password = ] N'password'
Jelszót ad meg a biztonsági mentéshez, ha jelszó beállított a mentés létrehozásakor.
@passworda sysname, alapértelmezés szerint NULLa .
[ @fileidhint = ] Fileidint
Azonosítja a visszaállítandó biztonsági halmaz egy ordinal értékét.
@fileidhintint, alapértelmezés NULLszerint .
[ @unload = ] Rakodás
Megadja, hogy a szalag biztonsági mentési eszközt a visszainicializálás után kell kitölteni.
@unloadbit, alapértelmezettként 1, ami előírja, hogy a szalagot le kell tölteni.
@unload csak akkor használatos, ha @backupdevicetype .tape
[ @subscriptionlsn = ] előfizetéslsn
Megadja azt a napló-szekvenciaszámot (LSN), amelynél az előfizetésnek el kell kezdenie a változásokat egy csomópontba egy peer-to-peer tranzakciós replikációs topológiában.
@subscriptionlsnbinary(10), alapértelmezett értéke NULL. Olyan @sync_type értékkel használják, initialize from lsn hogy minden releváns tranzakció replikáljon egy új csomópontba. További információért lásd: Peer-to-Peer - Transactional Replication.
[ @subscriptionstreams = ] előfizetéses folyamok
A terjesztési ügynökönként engedélyezett kapcsolatok száma, amely lehetővé teszi a módosítások kötegeinek egyidejű alkalmazását egy előfizetővel, miközben számos tranzakciós jellemző megmarad egyetlen szál használatakor.
@subscriptionstreamstinyint, alapértelmezettként NULL. A -től 64 a -ig terjedő értéktartomány 1 is támogatott. Ez a paraméter nem támogatott nem SQL Server előfizetők, Oracle Publishers vagy peer-to-peer előfizetések esetén. Amikor @subscriptionstreams használatban van, további sorokat adnak a msreplication_subscriptions táblázatba (egy sor/stream) egy agent_id beállítással NULL.
Megjegyzés:
Az előfizetési streamek nem működnek a Transact-SQL-hez konfigurált cikkekhez. Előfizetési streamek használatához konfigurálja a cikkeket tárolt eljáráshívások továbbítására.
[ @subscriber_type = ] subscriber_type
A feliratkozó típusa. @subscriber_typeapróság, és lehet ezek közé az értékek.
| Érték | Description |
|---|---|
0 (alapértelmezett) |
SQL Server Subscriber |
1 |
ODBC adatforrás szerver |
2 |
Microsoft Jet adatbázis |
3 |
OLE DB-szolgáltató |
[ @memory_optimized = ] memory_optimized
Jelzi, hogy az előfizetés támogatja a memóriaoptimalizált táblákat.
@memory_optimizedbit, alapértelmezett 0 (hamis) értékkel.
1 (true) azt jelenti, hogy az előfizetés támogatja a memóriaoptimalizált táblákat.
Kódértékek visszaadása
0 (sikeres) vagy 1 (hiba).
Megjegyzések
sp_addsubscription Snapshot replikációban és tranzakciós replikációban használják.
Amikor sp_addsubscription a rendszertagalmi fix szerver szerepének egyik tagja hajtja végre push előfizetés létrehozására, a Distribution Agent feladatot implicit módon létrehozzák és az SQL Server Agent szolgáltatási fiók alatt futnak. Javasoljuk, hogy hajtsd végre sp_addpushsubscription_agent és határozd meg egy másik, ügynökspecifikus Windows fiók hitelesítési adatait és @job_login@job_passwordesetén. További információ: Replikációs ügynök biztonsági modellje.
sp_addsubscription megakadályozza az ODBC és OLE DB előfizetők hozzáférését olyan kiadványokhoz, amelyek:
A sp_addpublication hívásában az őslakos @sync_method alapján hozták létre.
Tartalmazzák azokat a cikkeket, amelyeket a sp_addarticle tárolt eljárással adtak hozzá, és amelynek @pre_creation_cmd paraméterértéke 3 (rövidítés).
Próbáld meg @update_mode beállítást .
sync tranLegyen egy cikk konfigurálása paraméterezett állítások használatára.
Ezen felül, ha egy kiadványnak a @allow_queued_tran opció true-ra van állítva (ami lehetővé teszi a változások sorát az előfizetőnél addig tartani, amíg a kiadónál be nem kerül), a cikk időbélyeg-oszlopa időbélyegként van kiírva, és az adott oszlop változásait az Előfizetőnek küldik. Az Előfizető generálja és frissíti az időbélyeg oszlop értékét. Egy ODBC vagy OLE DB előfizető esetén sp_addsubscription akkor nem számít, ha megpróbálnak feliratkozni egy olyan kiadébretre, amelynek @allow_queued_tran true-ra van állítva, és olyan cikkekre van beállítva, amelyen időbélyeggel ellátott oszlopok vannak.
Ha egy előfizetés nem használ DTS csomagot, akkor nem tud előfizetni olyan kiadadványra, amely @allow_transformable_subscriptions-re van állítva. Ha a kiadvány táblázatát mind DTS-re, mind nem DTS előfizetésre kell másolni, két külön kiadványt kell létrehozni: egyet minden előfizetéstípushoz.
Amikor kiválasztjuk a sync_typereplication support onlyopciókat, initialize with backup, vagy initialize from lsn, a naplóolvasó ügynöknek futtatása után sp_addsubscriptionfutnia kell, hogy a beállító szkriptek megírják a disztribúciós adatbázisba. A naplóolvasó ügynöknek olyan fiók alatt kell futnia, amely a sysadmin rögzített kiszolgálói szerepkör tagja. Ha a @sync_type opció be van állítva Automatic, nem szükséges speciális naplóolvasó ügynök műveletek.
Permissions
Csak a rendszergazdai rendszertainált fix szerver vagy db_owner fix adatbázis szerepének tagjai hajthatják végre a sp_addsubscriptionjátékot. Pull előfizetéseknél azok a felhasználók, akik bejelentkeznek a kiadvány hozzáférési listájába, végrehajthatják a .sp_addsubscription
Példák
-- 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
Kapcsolódó tartalom
- Leküldéses előfizetés létrehozása
- Előfizetés létrehozása egy nem SQL Server előfizetőhöz
- Feliratkozás kiadványokra
- sp_addpushsubscription_agent (Transact-SQL)
- sp_changesubstatus (Transact-SQL)
- sp_dropsubscription (Transact-SQL)
- sp_helpsubscription (Transact-SQL)
- rendszer által tárolt eljárások (Transact-SQL)