sys.sp_addpushsubscription_agent (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Přidává novou úlohu plánovaného agenta, která slouží k synchronizaci push předplatného s transakční publikací. Tato uložená procedura se spustí v Publisheru v databázi publikace.

Important

Při konfiguraci Publisher s vzdáleným distributorem jsou hodnoty zadané pro všechny parametry, včetně @job_login a @job_password, odesílány distributoru jako čistý text. Před spuštěním této uložené procedury byste měli šifrovat připojení mezi vydavatelem a jeho vzdáleným distributorem. Další informace najdete v tématu Konfigurace databázového stroje SQL Serveru pro šifrování připojení.

Transact-SQL konvence syntaxe

Syntax

sys.sp_addpushsubscription_agent
    [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @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 ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @distribution_job_name = ] N'distribution_job_name' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @subscriber_provider = ] N'subscriber_provider' ]
    [ , [ @subscriber_datasrc = ] N'subscriber_datasrc' ]
    [ , [ @subscriber_location = ] N'subscriber_location' ]
    [ , [ @subscriber_provider_string = ] N'subscriber_provider_string' ]
    [ , [ @subscriber_catalog = ] N'subscriber_catalog' ]
    [ , [ @job_security_mode = ] job_security_mode ]
[ ; ]

Arguments

[ @publication = ] N'publication'

Název publikace. @publication je sysname, bez výchozího nastavení.

[ @subscriber = ] N'odběratel'

Název instance Subscriber instance, nebo jméno AG posluchače, pokud je databáze odběratelů součástí skupiny dostupnosti. @subscriber je sysname s výchozím nastavením NULL.

Note

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.

[ @subscriber_db = ] N'subscriber_db'

Název databáze předplatného. @subscriber_db je sysname s výchozím nastavením NULL.

Pro ne-SQL Server Subscriber zadejte hodnotu (výchozí cíl) pro @subscriber_db.

[ @subscriber_security_mode = ] subscriber_security_mode

Bezpečnostní režim je vhodné použít při připojení k předplatiteli při synchronizaci. @subscriber_security_mode je smallint, s výchozím hodnotou 1. Následující hodnoty definují bezpečnostní režim:

  • 0 specifikuje autentizaci SQL Serveru.
  • 1 specifikuje autentizaci Windows.
  • 2specifikuje ověření heslem Microsoft Entra počínaje SQL Server 2022 (16.x) CU 6.
  • 3specifikuje integrovanou autentizaci Microsoft Entra počínaje SQL Server 2022 (16.x) CU 6.
  • 4specifikuje autentizaci Microsoft Entra token počínaje SQL Server 2022 (16.x) CU 6.

Important

Pro aktualizace předplatného ve frontě použijte SQL Server Authentication pro připojení k předplatitelům a zadejte pro připojení ke každému předplatiteli jiný účet. Pro všechna ostatní předplatná použijte Windows Authentication.

[ @subscriber_login = ] N'subscriber_login'

Přihlášení předplatitele pro použití při připojení k předplatiteli při synchronizaci. @subscriber_login je sysname s výchozím nastavením .NULL

[ @subscriber_password = ] N'subscriber_password'

Heslo odběratele. @subscriber_password je vyžadováno, pokud je @subscriber_security_mode nastaveno na 0. @subscriber_password je sysname s výchozím nastavením NULL. Pokud je použito heslo předplatitele, automaticky se zašifruje.

Important

Nepoužívejte prázdné heslo. Použijte silné heslo. Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte přihlašovací údaje uložit do souboru skriptu, musíte ho zabezpečit, abyste zabránili neoprávněnému přístupu.

[ @job_login = ] N'job_login'

Přihlašovací údaje k účtu, pod kterým agent běží. Na Azure SQL Managed Instance použijte účet SQL Server. @job_login je nvarchar(257), s výchozím hodnotou NULL. Tento Windows účet se vždy používá pro agentní připojení k distributorovi a pro připojení k odběrateli při použití integrované autentizace Windows.

[ @job_password = ] N'job_password'

Heslo k účtu, pod kterým agent běží. @job_password je sysname bez výchozího nastavení.

Important

Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte přihlašovací údaje uložit do souboru skriptu, musíte ho zabezpečit, abyste zabránili neoprávněnému přístupu.

[ @job_name = ] N'job_name'

Název stávající pozice agenta. @job_name je sysname s výchozím nastavením NULL. Tento parametr je specifikován pouze tehdy, když je předplatné synchronizováno s existující úlohou, místo nově vytvořené úlohy (výchozí). Pokud nejste členem role pevného správce systému, musíte při určování @job_name specifikovat @job_login a @job_password.

[ @frequency_type = ] frequency_type

Frekvence, s jakou plánovat Distribution Agent. @frequency_type je int a může mít jednu z následujících hodnot.

Value Description
1 Jednorázový
2 Na vyžádání
4 Každý den
8 Weekly
16 Monthly
32 Měsíční příbuzný
64 (výchozí) Automatický start
128 Opakovaná platba

Note

Zadání hodnoty způsobí64, že Distribution Agent běží v kontinuálním režimu. To odpovídá nastavení parametru -Continuous pro agenta. Další informace naleznete v části Agent distribuce replikace.

[ @frequency_interval = ] frequency_interval

Hodnota se vztahuje na frekvenci nastavenou @frequency_type. @frequency_interval je int, s výchozím nastavením 1.

[ @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 mít jednu z následujících hodnot.

Value Description
1 (výchozí) First
2 Second
4 Třetí
8 Čtvrtý
16 Poslední

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Faktor opakování používaný @frequency_type. @frequency_recurrence_factor je int, s výchozím hodnotou 0.

[ @frequency_subday = ] frequency_subday

Určuje, jak často se má přeplánovat během definovaného období. @frequency_subday je int a může být jednou z následujících hodnot.

Value Description
1 Jednou
2 Second
4 (výchozí) Minuta
8 Hodina

[ @frequency_subday_interval = ] frequency_subday_interval

Přestávka na @frequency_subday. @frequency_subday_interval je int, s výchozím nastavením 5.

[ @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 0.

[ @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 , s výchozím nastavením 235959.

@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 0.

@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 99991231.

[ @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 určení názvu balíčku by DTSPub_Packageparametr byl @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N'dts_package_password'

Specifikuje heslo potřebné pro spuštění balíčku. @dts_package_password je sysname, s výchozím nastavením NULL, což znamená, že balíček nemá heslo.

Note

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 hodnotou distributor. Umístění balíčku může být distributor nebo subscriber.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Specifikuje, zda lze předplatné synchronizovat pomocí Microsoft Synchronization Manager. @enabled_for_syncmgr je nvarchar(5), s výchozím hodnotou false.

  • Pokud false, předplatné není registrováno v Synchronization Manager.
  • Pokud true, předplatné je registrováno v Synchronization Manager a lze ho synchronizovat bez nutnosti spouštět SQL Server Management Studio.

[ @distribution_job_name = ] N'distribution_job_name'

Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.

[ @publisher = ] N'vydavatele'

Název vydavatele. @publisher je sysname , s výchozím NULL.

[ @subscriber_provider = ] N'subscriber_provider'

Jedinečný programový identifikátor (PROGID), kterým je registrován poskytovatel OLE DB pro datový zdroj mimo SQL Server. @subscriber_provider je sysname, s výchozím nastavením NULL. @subscriber_provider musí být unikátní pro poskytovatele OLE DB nainstalovaného na distributorovi. @subscriber_provider je podporován pouze pro ne-SQL Server předplatitele.

[ @subscriber_datasrc = ] N'subscriber_datasrc'

Název datového zdroje podle poskytovatele OLE DB. @subscriber_datasrc je nvarchar(4000), s výchozím hodnotou NULL. @subscriber_datasrc je předána jako DBPROP_INIT_DATASOURCE vlastnost pro inicializaci poskytovatele OLE DB. @subscriber_datasrc je podporován pouze pro ne-SQL Server předplatitele.

[ @subscriber_location = ] N'subscriber_location'

Umístění databáze, jak jej chápe poskytovatel OLE DB. @subscriber_location je nvarchar(4000), s výchozím hodnotou NULL. @subscriber_location je předána jako DBPROP_INIT_LOCATION vlastnost pro inicializaci poskytovatele OLE DB. @subscriber_location je podporován pouze pro ne-SQL Server předplatitele.

[ @subscriber_provider_string = ] N'subscriber_provider_string'

OLE DB specifický poskytovatelský připojovací řetězec, který identifikuje zdroj dat. @subscriber_provider_string je nvarchar(4000), s výchozím hodnotou NULL. @subscriber_provider_string je předán IDataInitialize nebo nastaven jako DBPROP_INIT_PROVIDERSTRING vlastnost pro inicializaci poskytovatele OLE DB. @subscriber_provider_string je podporován pouze pro ne-SQL Server předplatitele.

[ @subscriber_catalog = ] N'subscriber_catalog'

Katalog se používá při navazování spojení s poskytovatelem OLE DB. @subscriber_catalog je sysname s výchozím nastavením NULL. @subscriber_catalog je předána jako DBPROP_INIT_CATALOG vlastnost pro inicializaci poskytovatele OLE DB. @subscriber_catalog je podporován pouze pro ne-SQL Server předplatitele.

[ @job_security_mode = ] job_security_mode

Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Remarks

sp_addpushsubscription_agent se používá při replikaci snapshotů a transakční replikaci.

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

Permissions

Pouze členové role pevného serveru správce systému nebo role pevné databáze db_owner mohou vykonávat sp_addpushsubscription_agent.