적용 대상: SQL Server
Azure SQL Managed Instance
밀어넣기 구독을 트랜잭션 게시에 동기화하는 데 사용되는 새 예약된 에이전트 작업을 추가합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
Important
원격 배포자를 사용하여 게시자를 구성할 때 @job_login 및 @job_password 비롯한 모든 매개 변수에 제공된 값은 일반 텍스트로 배포자로 전송됩니다. 이 저장 프로시저를 실행하기 전에 게시자와 해당 원격 배포자 간 연결을 암호화해야 합니다. 자세한 내용은 연결 암호화에 대한 SQL Server 데이터베이스 엔진 구성을 참조하세요.
구문
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' ]
[ ; ]
인수
[ @publication = ] N'publication'
게시의 이름 @publication 기본값이 없는 sysname입니다.
[ @subscriber = ] N'subscriber'
구독자 인스턴스의 이름 또는 구독자 데이터베이스가 가용성 그룹의 일부인 경우 AG 수신기의 이름입니다. @subscriber sysname이며 기본값은 .입니다NULL.
참고 항목
서버 이름은 기본 인스턴스 또는 <Hostname>\<InstanceName>,<PortNumber> 명명된 <Hostname>,<PortNumber> 인스턴스에 대해 지정할 수 있습니다. SQL Server가 사용자 지정 포트를 사용하여 Linux 또는 Windows에 배포되고 브라우저 서비스를 사용할 수 없는 경우 연결의 포트 번호를 지정합니다. 원격 배포자에 대한 사용자 지정 포트 번호의 사용은 SQL Server 2019(15.x) 이상 버전에 적용됩니다.
[ @subscriber_db = ] N'subscriber_db'
구독 데이터베이스의 이름입니다. @subscriber_db sysname이며 기본값은 .입니다NULL.
SQL Server 이외 구독자의 경우 subscriber_db 값(기본 대상)을 지정합니다.
[ @subscriber_security_mode = ] subscriber_security_mode
동기화할 때 구독자에 연결할 때 사용할 보안 모드입니다. @subscriber_security_mode 기본값1인 smallint입니다. 다음 값은 보안 모드를 정의합니다.
0는 SQL Server 인증을 지정합니다.1는 Windows 인증 지정합니다.2는 SQL Server 2022(16.x) CU 6부터 Microsoft Entra 암호 인증을 지정합니다.3는 SQL Server 2022(16.x) CU 6부터 Microsoft Entra 통합 인증을 지정합니다.4는 SQL Server 2022(16.x) CU 6부터 Microsoft Entra 토큰 인증을 지정합니다.
Important
대기 업데이트 구독의 경우 구독자에 대한 연결에 SQL Server 인증을 사용하고 각 구독자에 대한 연결에 대해 다른 계정을 지정합니다. 다른 모든 구독에는 Windows 인증을 사용합니다.
[ @subscriber_login = ] N'subscriber_login'
동기화할 때 구독자에 연결할 때 사용할 구독자 로그인입니다. @subscriber_login sysname이며 기본값은 .입니다NULL.
[ @subscriber_password = ] N'subscriber_password'
구독자 암호입니다. subscriber_security_mode 설정된 0경우 subscriber_password 필요합니다. @subscriber_password 기본값NULL인 sysname입니다. 구독자 암호가 사용되는 경우 자동으로 암호화됩니다.
Important
빈 비밀번호를 사용하지 마세요. 강력한 비밀번호를 사용하세요. 가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.
[ @job_login = ] N'job_login'
에이전트가 실행되는 계정에 대한 로그인입니다. Azure SQL Managed Instance에서 SQL Server 계정을 사용합니다. @job_login 기본값NULL인 nvarchar(257)입니다. 이 Windows 계정은 항상 배포자에 대한 에이전트 연결 및 Windows 통합 인증을 사용할 때 구독자에 대한 연결에 사용됩니다.
[ @job_password = ] N'job_password'
에이전트가 실행되는 계정의 암호입니다. @job_password 기본값이 없는 sysname입니다.
Important
가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.
[ @job_name = ] N'job_name'
기존 에이전트 작업의 이름입니다. @job_name sysname이며 기본값은 .입니다NULL. 이 매개 변수는 새로 만든 작업(기본값) 대신 기존 작업을 사용하여 구독을 동기화할 때만 지정됩니다. sysadmin 고정 서버 역할의 멤버가 아닌 경우 @job_name 지정할 때 @job_login 지정하고 @job_password 합니다.
[ @frequency_type = ] frequency_type
배포 에이전트 예약할 빈도입니다. @frequency_type int이며 다음 값 중 하나일 수 있습니다.
| 값 | 설명 |
|---|---|
1 |
한 번 |
2 |
주문형 |
4 |
매일 |
8 |
매주 |
16 |
매월 |
32 |
월별 상대 |
64(기본값) |
자동 시작 |
128 |
되풀이 |
참고 항목
값을 64 지정하면 배포 에이전트 연속 모드에서 실행됩니다. 에이전트의 -Continuous 매개 변수 설정에 해당합니다. 자세한 내용은 복제 배포 에이전트를 참조하세오.
[ @frequency_interval = ] frequency_interval
@frequency_type 설정된 빈도에 적용할 값입니다. @frequency_interval 기본값1인 int입니다.
[ @frequency_relative_interval = ] frequency_relative_interval
배포 에이전트 날짜입니다. 이 매개 변수는 frequency_type (월별 상대)로 설정 될 32 때 사용 됩니다.
@frequency_relative_interval int이며 다음 값 중 하나일 수 있습니다.
| 값 | 설명 |
|---|---|
1(기본값) |
첫 번째 |
2 |
두 번째 |
4 |
세 번째 |
8 |
네 번째 |
16 |
마지막 |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
@frequency_type 사용되는 되풀이 요소입니다. @frequency_recurrence_factor 기본값0인 int입니다.
[ @frequency_subday = ] frequency_subday
정의된 기간 동안 일정 조정 빈도를 지정합니다. @frequency_subday int이며 다음 값 중 하나일 수 있습니다.
| 값 | 설명 |
|---|---|
1 |
한 번 |
2 |
둘째 |
4(기본값) |
Minute |
8 |
Hour |
[ @frequency_subday_interval = ] frequency_subday_interval
@frequency_subday 간격입니다. @frequency_subday_interval 기본값5인 int입니다.
[ @active_start_time_of_day = ] active_start_time_of_day
배포 에이전트 처음 예약되고 형식HHmmss이 지정된 하루 중 시간입니다. @active_start_time_of_day 기본값0인 int입니다.
[ @active_end_time_of_day = ] active_end_time_of_day
배포 에이전트 예약이 중지되고 형식이 HHmmss지정된 하루 중 시간입니다. @active_end_time_of_day 기본값235959인 int입니다.
[ @active_start_date = ] active_start_date
배포 에이전트 처음 예약된 날짜로 형식이 지정됩니다yyyyMMdd. @active_start_date 기본값0인 int입니다.
[ @active_end_date = ] active_end_date
배포 에이전트 예약이 중지되는 날짜로 yyyyMMdd형식이 지정됩니다. @active_end_date 기본값99991231인 int입니다.
[ @dts_package_name = ] N'dts_package_name'
DTS(데이터 변환 서비스) 패키지의 이름을 지정합니다. @dts_package_name sysname이며 기본값은 .입니다NULL. 예를 들어 패키지 이름을 DTSPub_Package지정하려면 매개 변수가 됩니다 @dts_package_name = N'DTSPub_Package'.
[ @dts_package_password = ] N'dts_package_password'
패키지를 실행하는 데 필요한 암호를 지정합니다. @dts_package_password sysname이며, 기본값NULL은 패키지에 암호가 없음을 의미합니다.
참고 항목
@dts_package_name 지정한 경우 암호를 지정해야 합니다.
[ @dts_package_location = ] N'dts_package_location'
패키지 위치를 지정합니다. @dts_package_location 기본값distributor인 nvarchar(12)입니다. 패키지의 위치는 일 수 있습니다distributor.subscriber
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Microsoft Synchronization Manager를 통해 구독을 동기화할 수 있는지 여부를 지정합니다. @enabled_for_syncmgr 기본값false인 nvarchar(5)입니다.
- 구독이 Synchronization Manager에 등록되지 않은 경우
false - 이 경우
true구독이 Synchronization Manager에 등록되고 SQL Server Management Studio를 시작하지 않고 동기화할 수 있습니다.
[ @distribution_job_name = ] N'distribution_job_name'
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.
[ @publisher = ] N'publisher'
게시자의 이름입니다. @publisher sysname이며 기본값은 .입니다NULL.
[ @subscriber_provider = ] N'subscriber_provider'
비 SQL Server 데이터 원본에 대한 OLE DB 공급자가 등록된 고유한 PROGID(프로그래밍 식별자)입니다. @subscriber_provider sysname이며 기본값은 .입니다NULL. @subscriber_provider 배포자에 설치된 OLE DB 공급자에 대해 고유해야 합니다. @subscriber_provider 비 SQL Server 구독자에 대해서만 지원됩니다.
[ @subscriber_datasrc = ] N'subscriber_datasrc'
OLE DB 공급자가 인식한 데이터 원본의 이름입니다.@subscriber_datasrc 기본값NULL인 nvarchar(4000)입니다. @subscriber_datasrc OLE DB 공급자를 DBPROP_INIT_DATASOURCE 초기화하는 속성으로 전달됩니다. @subscriber_datasrc 비 SQL Server 구독자에 대해서만 지원됩니다.
[ @subscriber_location = ] N'subscriber_location'
OLE DB 공급자가 이해하는 데이터베이스의 위치입니다. @subscriber_location 기본값NULL인 nvarchar(4000)입니다. @subscriber_location OLE DB 공급자를 DBPROP_INIT_LOCATION 초기화하는 속성으로 전달됩니다. @subscriber_location 비 SQL Server 구독자에 대해서만 지원됩니다.
[ @subscriber_provider_string = ] N'subscriber_provider_string'
데이터 원본을 식별하는 OLE DB 공급자별 연결 문자열. @subscriber_provider_string 기본값NULL인 nvarchar(4000)입니다. @subscriber_provider_string IDataInitialize에 전달되거나 OLE DB 공급자를 초기화하는 속성으로 DBPROP_INIT_PROVIDERSTRING 설정됩니다. @subscriber_provider_string 비 SQL Server 구독자에 대해서만 지원됩니다.
[ @subscriber_catalog = ] N'subscriber_catalog'
OLE DB 공급자에 연결할 때 사용할 카탈로그입니다. @subscriber_catalog sysname이며 기본값은 .입니다NULL. @subscriber_catalog OLE DB 공급자를 DBPROP_INIT_CATALOG 초기화하는 속성으로 전달됩니다. @subscriber_catalog SQL Server 이외 구독자에 대해서만 지원됩니다.
반환 코드 값
0(성공) 또는 1(실패).
설명
sp_addpushsubscription_agent 는 스냅샷 복제 및 트랜잭션 복제에 사용됩니다.
예제
-- 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
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_addpushsubscription_agent수 있습니다.