다음을 통해 공유


Replication Distribution Agent

적용 대상: SQL Server Azure SQL Database

복제 배포 에이전트는 스냅샷(스냅샷 복제 및 트랜잭션 복제의 경우)과(와) 배포 데이터베이스 테이블에 보관된 트랜잭션(트랜잭션 복제의 경우)을(를) 구독자의 대상 테이블로 이동하는 실행 파일입니다.

참고 항목

매개 변수는 순서에 따라 지정할 수 있습니다. 선택적 매개 변수를 지정하지 않으면 로컬 컴퓨터에서 미리 정의된 레지스트리 설정의 값이 사용됩니다.

구문

distrib [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
-Subscriber server_name [ \instance_name ]
-SubscriberDB subscriber_database
[ -AltSnapshotFolder alt_snapshot_folder_path ]
[ -BcpBatchSize bcp_batch_size ]
[ -CommitBatchSize commit_batch_size ]
[ -CommitBatchThreshold commit_batch_threshold ]
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor distributor ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ErrorFile error_path_and_file_name ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -FileTransferType [ 0 | 1 ] ]
[ -FtpAddress ftp_address ]
[ -FtpPassword ftp_password ]
[ -FtpPort ftp_port ]
[ -FtpUserName ftp_user_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 | 3 ] ]
[ -Hostname host_name ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -MaxBcpThreads ]
[ -MaxDeliveredTransactions number_of_transactions ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -OledbStreamThreshold oledb_stream_threshold ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -Publication publication ]
[ -QueryTimeOut query_time_out_seconds ]
[ -QuotedIdentifier quoted_identifier ]
[ -SkipErrors native_error_id [ :...n ] ]
[ -SubscriberDatabasePath subscriber_path ]
[ -SubscriberLogin subscriber_login ]
[ -SubscriberPassword subscriber_password ]
[ -SubscriberSecurityMode [ 0 | 1 ] ]
[ -SubscriberType [ 0 | 1 | 3 ] ]
[ -SubscriptionStreams [ 1 | 2 | ...64 ] ]
[ -SubscriptionTableName subscription_table ]
[ -SubscriptionType [ 0 | 1 | 2 ] ]
[ -TransactionsPerHistory [ 0 | 1 | ...10000 ] ]
[ -UseDTS ]
[ -UseInprocLoader ]
[ -UseOledbStreaming ]

인수

-?

사용 가능한 모든 매개 변수를 인쇄합니다.

-Publisher server_name [ \instance_name ]

게시자의 이름입니다. 해당 서버에서 Microsoft SQL Server의 기본 인스턴스를 지정 <server_name> 합니다. 해당 서버에서 명명된 SQL Server 인스턴스를 지정 <server_name>\<instance_name> 합니다. 게시자 데이터베이스가 AG(가용성 그룹)에 있는 경우 sp_redirect_publisher 인해 원래 주 게시자 서버 이름이 계속 반영됩니다. AG 수신기 이름은 반영되지 않습니다.

-PublisherDB publisher_database

게시자 데이터베이스의 이름입니다.

-Subscriber server_name [ \instance_name ]

구독자의 이름입니다. 해당 서버에서 SQL Server의 기본 인스턴스를 지정 <server_name> 합니다. 해당 서버에서 명명된 SQL Server 인스턴스를 지정 <server_name>\<instance_name> 합니다. 구독자 데이터베이스가 AG에 있는 경우 AG 수신기 이름을 반영해야 합니다.

-SubscriberDB subscriber_database

구독자 데이터베이스의 이름입니다.

-AltSnapshotFolder alt_snapshot_folder_path

구독에 대한 초기 스냅샷이 포함된 폴더의 경로입니다.

-BcpBatchSize bcp_batch_size

대량 복사 작업에서 보낼 행 수입니다. 작업을 수행할 bcp in 때 일괄 처리 크기는 하나의 트랜잭션으로 서버에 보낼 행 수와 배포 에이전트 bcp 진행률 메시지를 기록하기 전에 전송해야 하는 행의 수입니다. 작업을 수행할 bcp out 때 고정 일괄 처리 크기 1000 가 사용됩니다.

-CommitBatchSize commit_batch_size

COMMIT 문을 실행하기 전에 구독자에 발급할 트랜잭션 수입니다. 기본값은 100이고 최대 값은 10000입니다. 이 매개 변수는 배포 에이전트 구독자에 스냅샷을 적용할 때 무시됩니다.

-CommitBatchThreshold commit_batch_threshold

COMMIT 문을 실행하기 전에 구독자에 발급할 복제 명령의 수입니다. 기본값은 1000이고 최대 값은 10000입니다. 이 매개 변수는 배포 에이전트 구독자에 스냅샷을 적용할 때 무시됩니다.

-Continuous

에이전트가 복제된 트랜잭션을 지속적으로 폴링하려고 하는지 여부를 지정합니다. 지정된 경우 에이전트는 보류 중인 트랜잭션이 없더라도 폴링 간격으로 원본에서 복제된 트랜잭션을 폴링합니다.

-DefinitionFile def_path_and_file_name

에이전트 정의 파일의 경로입니다. 에이전트 정의 파일에는 에이전트의 명령 프롬프트 인수가 들어 있습니다. 파일 내용은 실행 파일로 구문 분석됩니다. 큰따옴표(")를 사용하여 임의의 문자가 포함된 인수 값을 지정합니다.

-배포자 배포자

배포자 이름입니다. 배포자(푸시) 배포의 경우 이름은 기본적으로 로컬 배포자의 이름으로 설정됩니다. 배포자 데이터베이스가 AG에 있는 경우 AG 수신기 이름을 반영해야 합니다.

-DistributorLogin distributor_login

배포자 로그인 이름입니다.

-DistributorPassword distributor_password

배포자 암호입니다.

-DistributorSecurityMode [ 0 | 1 ]

배포자의 보안 모드를 지정합니다. 값 0은 SQL Server 인증 모드를 나타내고 값 1은 Windows 인증 모드(기본값)를 나타냅니다.

-EncryptionLevel [ 0 | 1 | 2 ]

이전에 SSL(Secure Sockets Layer)로 알려진 TLS(전송 계층 보안) 수준입니다. 연결을 만들 때 배포 에이전트 사용하는 암호화입니다.

EncryptionLevel 값 설명
0 TLS가 사용되지 않도록 지정합니다.
1 TLS가 사용되도록 지정하지만 에이전트는 TLS 서버 인증서가 신뢰할 수 있는 발급자에서 서명되었는지 확인하지 않습니다.
2 TLS가 사용되고 인증서가 확인되도록 지정합니다.

유효한 TLS 인증서는 SQL Server의 정규화된 도메인 이름으로 정의됩니다. 설정할 -EncryptionLevel 때 에이전트가 성공적으로 연결되도록 하려면 2로컬 SQL Server에 별칭을 만듭니다. 'Alias Name' 매개 변수는 서버 이름이어야 하며 'Server' 매개 변수는 SQL Server의 정규화된 이름으로 설정해야 합니다.

자세한 내용은 복제 보안 설정 보기 및 수정을 참조하세요.

-ErrorFile error_path_and_file_name

배포 에이전트 생성된 오류 파일의 경로 및 파일 이름입니다. 이 파일은 구독자에서 복제 트랜잭션을 적용하는 동안 오류가 발생한 지점에서 생성됩니다. 게시자 또는 배포자에서 발생하는 오류는 이 파일에 기록되지 않습니다. 이 파일에는 실패한 복제 트랜잭션 및 관련 오류 메시지가 포함되어 있습니다. 지정하지 않으면 오류 파일이 배포 에이전트 현재 디렉터리에 생성됩니다. 오류 파일 이름은 .err 확장명을 가진 배포 에이전트 이름입니다. 지정된 파일 이름이 있으면 오류 메시지가 파일에 추가됩니다. 이 매개 변수는 최대 256자 유니코드 문자일 수 있습니다.

-ExtendedEventConfigFile configuration_path_and_file_name

확장 이벤트 XML 구성 파일의 경로 및 파일 이름을 지정합니다. 확장 이벤트 구성 파일을 사용하면 세션을 구성하고 추적을 위해 이벤트를 사용하도록 설정할 수 있습니다.

-FileTransferType [ 0 | 1 ]

파일 전송 유형을 지정합니다. 값은 0 UNC(범용 명명 규칙)를 나타내고 값은 1 FTP(파일 전송 프로토콜)를 나타냅니다.

-FtpAddress ftp_address

배포자에 대한 FTP 서비스의 네트워크 주소입니다. 지정 DistributorAddress 하지 않으면 사용됩니다. DistributorAddress 지정 Distributor 하지 않으면 사용됩니다.

-FtpPassword ftp_password

FTP 서비스에 연결하는 데 필요한 사용자 암호입니다.

-FtpPort ftp_port

배포자에 대한 FTP 서비스의 포트 번호입니다. 지정하지 않으면 FTP 서비스(21)의 기본 포트 번호가 사용됩니다.

-FtpUserName ftp_user_name

FTP 서비스에 연결하는 데 사용되는 사용자 이름입니다. 지정 anonymous 하지 않으면 사용됩니다.

-HistoryVerboseLevel [ 0 | 1 | 2 | 3 ]

배포 작업 중에 기록된 기록의 양을 지정합니다. 를 선택하여 기록 로깅의 성능 효과를 최소화할 수 있습니다 1.

HistoryVerboseLevel 값 설명
0 진행 메시지를 콘솔이나 출력 파일에 씁니다. 기록 레코드는 배포 데이터베이스에 기록되지 않습니다.
1(기본값) 항상 동일한 상태(시작, 진행률, 성공 등)의 이전 기록 메시지를 업데이트합니다. 상태가 같은 이전 레코드가 없으면 새 레코드를 삽입합니다.
2 레코드가 유휴 메시지 또는 장기 실행 작업 메시지와 같은 항목에 대한 레코드가 아니면 새 기록 레코드를 삽입합니다. 이 경우 이전 레코드를 업데이트합니다.
3 유휴 메시지용이 아니면 항상 새 레코드를 삽입합니다.

-Hostname host_name

게시자에 연결할 때 사용되는 호스트 이름입니다. 이 매개 변수는 최대 128자 유니코드 문자일 수 있습니다.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

기록 스레드가 서버의 응답을 기다리는 기존 연결이 있는지 확인하기 전의 시간(초)입니다. 장기 실행 일괄 처리를 실행할 때 검사 에이전트가 배포 에이전트 용의자로 표시하지 않도록 이 값을 줄일 수 있습니다. 기본값은 초입니다 300 .

-LoginTimeOut login_time_out_seconds

로그인 시간이 초과되기 전의 시간(초)입니다. 기본값은 초입니다 15 .

-MaxBcpThreads number_of_threads

병렬로 수행할 수 있는 대량 복사 작업의 수를 지정합니다. 동시에 존재하는 스레드 및 ODBC 연결의 최대 수는 배포 데이터베이스의 MaxBcpThreads 동기화 트랜잭션에 표시되는 대량 복사 요청 수보다 작거나 횟수입니다. MaxBcpThreads 값이 보다 0 크고 하드 코딩된 상한이 없어야 합니다. 기본값은 2 프로세서 수(최대값)의 횟수입니다 8. 동시 스냅샷 옵션을 사용하여 게시자에서 생성된 스냅샷을 적용할 때 지정 MaxBcpThreads한 수에 관계없이 하나의 스레드가 사용됩니다.

-MaxDeliveredTransactions number_of_transactions

한 번의 동기화에서 구독자에 적용된 최대 밀어넣기 또는 끌어오기 트랜잭션 수입니다. 값은 0 최대값이 무한 트랜잭션 수임을 나타냅니다. 구독자는 다른 값을 사용하여 게시자에서 끌어오는 동기화 기간을 단축할 수 있습니다.

-Continuous 둘 다 지정된 경우 -MaxDeliveredTransactions 배포 에이전트 지정된 수의 트랜잭션을 전달한 다음 중지합니다(지정된 경우에도-Continuous). 작업이 완료된 후 배포 에이전트 다시 시작해야 합니다.

-MessageInterval message_interval

기록 로깅에 사용되는 시간 간격입니다. 기록 이벤트는 다음과 같은 경우에 기록됩니다.

  • TransactionsPerHistory 마지막 기록 이벤트가 기록된 후에 값에 도달합니다.

  • MessageInterval 마지막 기록 이벤트가 기록된 후에 값에 도달합니다.

원본에서 사용할 수 있는 복제된 트랜잭션이 없는 경우 에이전트는 배포자에 트랜잭션 없음 메시지를 보고합니다. 이 옵션은 에이전트가 다른 트랜잭션 없음 메시지를 보고하기 전에 대기하는 시간을 지정합니다. 에이전트는 이전에 복제된 트랜잭션을 처리한 후 원본에서 사용할 수 있는 트랜잭션이 없다는 것을 감지할 때 항상 트랜잭션 없음 메시지를 보고합니다. 기본값은 60초입니다.

-MultiSubnetFailover

적용 대상: SQL Server 2019(15.x) 이상 버전

MultiSubnetFailover 속성을 사용할지 여부를 지정합니다. 애플리케이션이 다른 서브넷의 AG에 연결하는 경우 MultiSubnetFailover=true를 설정하면 (현재) 활성 서버에 대한 빠른 검색 및 연결을 제공합니다.

-OledbStreamThreshold oledb_stream_threshold

데이터가 스트림으로 바인딩되는 이진 대용량 개체 데이터의 최소 크기(바이트)를 지정합니다. 이 매개 변수를 사용하려면 지정 -UseOledbStreaming 해야 합니다. 값의 범위는 400바이트에서 1,048,576바이트로, 기본값은 16,384바이트입니다.

-출력 output_path_and_file_name

에이전트 출력 파일의 경로입니다. 파일 이름이 제공되지 않으면 출력이 콘솔로 전송됩니다. 지정된 파일 이름이 있으면 출력이 파일에 추가됩니다.

-OutputVerboseLevel [ 0 | 1 | 2 ]

출력이 자세해야 하는지 여부를 지정합니다. 자세한 정보 표시 수준이 0면 오류 메시지만 인쇄됩니다. 자세한 정보 표시 수준이 1면 모든 진행률 보고서 메시지가 출력됩니다. 자세한 정보 수준 2 (기본값)이면 모든 오류 메시지와 진행률 보고서 메시지가 인쇄되므로 디버깅에 유용합니다.

-PacketSize packet_size

패킷 크기(바이트)입니다. 기본값은 4096(바이트)입니다.

-PollingInterval polling_interval

배포 데이터베이스가 복제된 트랜잭션에 대해 쿼리되는 빈도(초)입니다. 기본값은 5초입니다.

-ProfileName profile_name

에이전트 매개 변수에 사용할 에이전트 프로필을 지정합니다. 이 NULL경우 ProfileName 에이전트 프로필을 사용할 수 없습니다. 지정하지 않으면 ProfileName 에이전트 유형에 대한 기본 프로필이 사용됩니다. 자세한 내용은 복제 에이전트 프로필을 참조 하세요.

-게시 게시

게시의 이름 이 매개 변수는 게시가 항상 새 구독 또는 다시 초기화된 구독에 대해 스냅샷을 사용할 수 있도록 설정된 경우에만 유효합니다.

-QueryTimeOut query_time_out_seconds

쿼리 시간이 초과되기 전의 시간(초)입니다. 기본값은 1,800초입니다.

-QuotedIdentifier quoted_identifier

사용할 따옴표 붙은 식별자 문자를 지정합니다. 값의 첫 번째 문자는 배포 에이전트 사용하는 값을 나타냅니다. 값 없이 사용되는 경우 QuotedIdentifier 배포 에이전트 공백을 사용합니다. 사용되지 않는 경우 QuotedIdentifier 배포 에이전트 구독자가 지원하는 따옴표 붙은 식별자를 사용합니다.

-SkipErrors native_error_id [ :... n ]

이 에이전트에서 건너뛸 오류 번호를 지정하는 콜론으로 구분된 목록입니다. 배포 에이전트 구독자에 스냅샷을 적용할 때 이 매개 변수는 무시됩니다.

-SubscriberDatabasePath subscriber_database_path

Jet 데이터베이스(.mdb 파일)에 대한 경로입니다 2 (ODBC DSN(데이터 원본 이름) 없이 Jet 데이터베이스에 연결할 수 있습니다.)SubscriberType

-SubscriberLogin subscriber_login

구독자 로그인 이름입니다. SQL Server 인증의 0 경우 SubscriberSecurityMode 이 매개 변수를 지정해야 합니다.

-SubscriberPassword subscriber_password

구독자 암호입니다. SQL Server 인증의 0 경우 SubscriberSecurityMode 이 매개 변수를 지정해야 합니다.

-SubscriberSecurityMode [ 0 | 1 ]

구독자의 보안 모드를 지정합니다. 값 0 은 SQL Server 인증을 나타내고 값은 1 Windows 인증 모드(기본값)를 나타냅니다.

-SubscriberType [ 0 | 1 | 3 ]

배포 에이전트 사용하는 구독자 연결 유형을 지정합니다.

SubscriberType 값 설명
0 SQL Server
1 ODBC 데이터 원본
3 OLE DB 데이터 원본

-SubscriptionStreams [ 0 | 1 | 2 | ... 64 ]

배포 에이전트 단일 스레드를 사용할 때 존재하는 많은 트랜잭션 특성을 유지하면서 구독자에 병렬로 변경 내용을 일괄 적용하는 데 허용되는 연결 수입니다. SQL Server 게시자의 경우 1에서 64까지의 값 범위가 지원됩니다.

이 매개 변수는 지원되지 않거나 SQL Server 이외 구독자 또는 피어 투 피어 구독에 대해 지원되지 0 않습니다. 배포 에이전트 구독자에 스냅샷을 적용할 때 이 매개 변수는 무시됩니다.

연결 중 하나가 실행 또는 커밋에 실패하면 모든 연결이 현재 일괄 처리를 중단하고 에이전트는 단일 스트림을 사용하여 실패한 일괄 처리를 다시 시도합니다. 이 재시도 단계가 완료되기 전에 구독자에 임시 트랜잭션 불일치가 있을 수 있습니다. 실패한 일괄 처리가 성공적으로 커밋되면 구독자는 트랜잭션 일관성 상태로 돌아갑니다.

Important

값을 2 지정하는 -SubscriptionStreams경우 구독자에서 트랜잭션이 수신되는 순서는 게시자에서 수행한 순서와 다를 수 있습니다. 이 동작으로 인해 동기화 중에 제약 조건 위반이 NOT FOR REPLICATION 발생하는 경우 동기화 중에 제약 조건 적용을 사용하지 않도록 설정하는 옵션을 사용해야 합니다. 자세한 내용은 동기화에서 트리거 및 제약 조건의 제어 동작을 참조 하세요.

Transact-SQL을 제공하도록 구성된 아티클에는 구독 스트림이 작동하지 않습니다. 구독 스트림을 사용하려면 저장 프로시저 호출을 대신 배달하도록 문서를 구성합니다.

-SubscriptionTableName subscription_table

지정된 구독자에서 생성되거나 사용되는 구독 테이블의 이름입니다. 지정 하지 않으면 MSreplication_subscriptions 테이블이 사용됩니다. 긴 파일 이름을 지원하지 않는 DBMS(데이터베이스 관리 시스템)에는 이 옵션을 사용합니다.

-SubscriptionType [ 0 | 1 | 2 ]

배포에 대한 구독 유형을 지정합니다. 값 0 은 밀어넣기 구독을 나타내고, 값은 1 끌어오기 구독을 나타내고, 값은 2 익명 구독을 나타냅니다.

-TransactionsPerHistory [ 0 | 1 | ... 10000 ]

기록 로깅에 대한 트랜잭션 간격을 지정합니다. 기록 로깅의 마지막 인스턴스 이후 커밋된 트랜잭션 수가 이 옵션보다 크면 기록 메시지가 기록됩니다. 기본값은 100입니다. 값은 0 무한 TransactionsPerHistory을 나타냅니다. 이전 매개 변수를 참조하세요 –MessageInterval.

-UseDTS

데이터 변환을 허용하는 게시에 대한 매개 변수로 지정해야 합니다.

-UseInprocLoader

배포 에이전트에서 구독자에 스냅샷 파일을 적용할 때 BULK INSERT 명령을 사용하도록 지정하여 초기 스냅샷의 성능을 향상시킵니다. 이 매개 변수는 XML 데이터 형식과 호환되지 않으므로 더 이상 사용되지 않습니다. XML 데이터를 복제하지 않는 경우 이 매개 변수를 사용할 수 있습니다. 이 매개 변수는 문자 모드 스냅샷 또는 SQL Server 이외 구독자와 함께 사용할 수 없습니다. 이 매개 변수를 사용하는 경우 구독자의 SQL Server 서비스 계정에는 스냅샷 .bcp 데이터 파일이 있는 디렉터리에 대한 읽기 권한이 필요합니다. 이 매개 변수를 사용하지 않으면 에이전트(비 SQL Server 구독자의 경우) 또는 에이전트(SQL Server 구독자의 경우)가 로드한 ODBC 드라이버가 파일에서 읽기 때문에 SQL Server 서비스 계정의 보안 컨텍스트가 사용되지 않습니다.

-UseOledbStream

지정하면 이진 대용량 개체 데이터를 스트림으로 바인딩할 수 있습니다. 스트림이 사용되는 크기(바이트)를 지정하는 데 사용합니다 -OledbStreamThreshold . UseOledbStreaming는 기본적으로 사용하도록 설정됩니다.

SQL Server 2017(14.x) CU 22 이상 버전 UseOledbStreaming 에서는 폴더에 C:\Users\<DistributionAgentAccount>\AppData\Temp 씁니다.

SQL Server 2017(14.x) CU 22 UseOledbStreaming 전에 폴더에 C:\Program Files\Microsoft SQL Server\<version>\COM 씁니다.

SQL Server 2019(15.x) CU 29, SQL Server 2022(16.x) CU 16 이상 버전에서는 SQL Server에서 배포 에이전트 실행할 때 오류 메시지에 언급된 오류를 방지하기 위해 0 업데이트 -UseOledbStreaming 하여 OLE DB 스트리밍을 사용하지 않도록 설정할 수 있습니다.

설명

도메인 사용자 계정(기본값)이 아닌 로컬 시스템 계정으로 실행할 SQL Server 에이전트 설치한 경우 서비스는 로컬 컴퓨터에만 액세스할 수 있습니다. SQL Server 에이전트 실행 중인 배포 에이전트 SQL Server 인스턴스에 로그인할 때 Windows 인증 모드를 사용하도록 구성된 경우 배포 에이전트 실패합니다. 기본 설정은 SQL Server 인증입니다. 보안 계정을 변경하는 방법에 대한 자세한 내용은 View and Modify Replication Security Settings을 참조하십시오.

배포 에이전트 시작하려면 명령 프롬프트에서 실행 distrib.exe 합니다. 자세한 내용은 복제 에이전트 실행 파일 개념을 참조 하세요.