트랜잭션 게시에 업데이트할 수 있는 구독 만들기
적용 대상: SQL Server
참고 항목
이 기능은 2012부터 2016까지의 SQL Server 버전에서 계속 지원됩니다. SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
트랜잭션 복제에서는 즉시 업데이트 구독 또는 지연 업데이트 구독을 사용하여 구독자에서 변경된 내용을 게시자에 다시 전파할 수 있습니다. 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 업데이트 구독을 만들 수 있습니다.
새 구독 마법사의 업데이트 할 수 있는 구독 페이지에서 업데이트할 수 있는 구독을 구성합니다. 이 페이지는 업데이트할 수 있는 구독에 대해 트랜잭션 게시를 사용하도록 설정한 경우에만 사용할 수 있습니다. 업데이트할 수 있는 구독을 사용하도록 설정하는 방법에 대한 자세한 내용은 트랜잭션 게시에 대해 업데이트할 수 있는 구독 설정을 참조하세요.
게시자에서 업데이트할 수 있는 구독 구성
Microsft SQL Server Management Studio에서 게시자에 연결한 다음 해당 서버 노드를 확장합니다.
복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.
업데이트 구독에 사용할 수 있는 트랜잭션 게시를 마우스 오른쪽 단추로 클릭한 다음 새 구독을 클릭합니다.
마법사 페이지에 따라 배포 에이전트에서 실행해야 하는 위치와 같은 구독에 대한 옵션을 지정합니다.
새 구독 마법사의 업데이트할 수 있는 구독 페이지에서 복제가 선택되었는지 확인합니다.
게시자에서 커밋 드롭다운 목록에서 옵션을 선택합니다.
즉시 업데이트 구독을 사용하려면 변경 내용을 동시에 커밋을 선택합니다. 이 옵션을 선택하고 게시에서 지연 업데이트 구독을 허용한 경우(새 게시 마법사로 만든 게시의 기본 설정), 구독 속성 update_mode가 failover로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 지연 업데이트로 전환할 수 있습니다.
지연 업데이트 구독을 사용하려면 큐 변경 내용 및 가능하면 커밋을 선택합니다. 이 옵션을 선택하고 게시에서 즉시 업데이트 구독을 허용하며(새 게시 마법사로 만든 게시의 기본 설정) 구독자에서 SQL Server 2005 이상 버전이 실행될 경우 구독 속성 update_mode가 queued failover로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 즉시 업데이트로 전환할 수 있습니다.
업데이트 모드 전환에 대한 자세한 내용은 업데이트할 수 있는 트랜잭션 구독에 대한 업데이트 모드 간 전환을 참조하세요.
즉시 업데이트를 사용하거나 update_mode가 queued failover로 설정된 구독에 대해 업데이트할 수 있는 구독에 대한 로그인 페이지가 표시됩니다. 업데이트할 수 있는 구독에 로그인 페이지에서 즉시 업데이트 구독을 위해 만든 게시자에 연결하는 연결된 서버를 지정합니다. 연결은 구독자에서 실행되고 변경 내용을 게시자에 전파하는 트리거에서 사용됩니다. 다음 옵션 중 하나를 선택합니다.
SQL Server 인증을 사용하여 연결하는 연결된 서버를 만듭니다. 구독자와 게시자 간에 원격 서버 또는 연결된 서버를 정의하지 않은 경우 이 옵션을 선택하세요. 복제는 연결된 서버를 만듭니다. 지정한 계정이 게시자에 이미 있어야 합니다.
이미 정의한 연결된 서버 또는 원격 서버를 사용합니다. sp_addserver(Transact-SQL), sp_addlinkedserver(Transact-SQL), SQL Server Management Studio 또는 다른 방법을 사용하여 구독자와 게시자 간에 원격 서버 또는 연결된 서버를 정의한 경우 이 옵션을 선택합니다.
연결된 서버 계정에 필요한 사용 권한에 대한 자세한 내용은 여기에 링크 설명 입력의 지연 업데이트 구독을 참조하세요.
마법사를 완료합니다.
구독자에서 업데이트할 수 있는 구독 구성
SQL Server Management Studio에서 구독자에 연결한 다음 해당 서버 노드를 확장합니다.
복제 폴더를 확장합니다.
로컬 구독 폴더를 마우스 오른쪽 단추로 클릭한 다음 새 구독을 클릭합니다.
새 구독 마법사의 게시 페이지에서 게시자 드롭다운 목록에서 SQL Server 게시자 찾기를 선택합니다.
서버에 연결 대화 상자에서 게시자에 연결합니다.
게시 페이지에서 업데이트 구독을 사용할 수 있도록 설정된 트랜잭션 게시를 선택합니다.
마법사 페이지에 따라 배포 에이전트에서 실행해야 하는 위치와 같은 구독에 대한 옵션을 지정합니다.
새 구독 마법사의 업데이트할 수 있는 구독 페이지에서 복제가 선택되었는지 확인합니다.
게시자에서 커밋 드롭다운 목록에서 옵션을 선택합니다.
즉시 업데이트 구독을 사용하려면 변경 내용을 동시에 커밋을 선택합니다. 이 옵션을 선택하고 게시에서 지연 업데이트 구독을 허용한 경우(새 게시 마법사로 만든 게시의 기본 설정), 구독 속성 update_mode가 failover로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 지연 업데이트로 전환할 수 있습니다.
지연 업데이트 구독을 사용하려면 큐 변경 내용 및 가능하면 커밋을 선택합니다. 이 옵션을 선택하고 게시에서 즉시 업데이트 구독을 허용하며(새 게시 마법사로 만든 게시의 기본 설정) 구독자에서 SQL Server 2005 이상 버전이 실행될 경우 구독 속성 update_mode가 queued failover로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 즉시 업데이트로 전환할 수 있습니다.
업데이트 모드 전환에 대한 자세한 내용은 업데이트할 수 있는 트랜잭션 구독에 대한 업데이트 모드 간 전환을 참조하세요.
즉시 업데이트를 사용하거나 update_mode가 queued failover로 설정된 구독에 대해 업데이트할 수 있는 구독에 대한 로그인 페이지가 표시됩니다. 업데이트할 수 있는 구독에 로그인 페이지에서 즉시 업데이트 구독을 위해 만든 게시자에 연결하는 연결된 서버를 지정합니다. 연결은 구독자에서 실행되고 변경 내용을 게시자에 전파하는 트리거에서 사용됩니다. 다음 옵션 중 하나를 선택합니다.
SQL Server 인증을 사용하여 연결하는 연결된 서버를 만듭니다. 구독자와 게시자 간에 원격 서버 또는 연결된 서버를 정의하지 않은 경우 이 옵션을 선택하세요. 복제는 연결된 서버를 만듭니다. 지정한 계정이 게시자에 이미 있어야 합니다.
이미 정의한 연결된 서버 또는 원격 서버를 사용합니다. sp_addserver(Transact-SQL), sp_addlinkedserver(Transact-SQL), SQL Server Management Studio 또는 다른 방법을 사용하여 구독자와 게시자 간에 원격 서버 또는 연결된 서버를 정의한 경우 이 옵션을 선택합니다.
연결된 서버 계정에 필요한 사용 권한에 대한 자세한 내용은 여기에 링크 설명 입력의 지연 업데이트 구독을 참조하세요.
마법사를 완료합니다.
즉시 업데이트 끌어오기 구독 만들기
게시자에서 sp_helppublication을 실행하여 게시에서 즉시 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_sync_tran
값이1
이면 게시는 즉시 업데이트 구독을 지원합니다. - 결과 집합의
allow_sync_tran
값이0
이면 즉시 업데이트 구독을 사용하도록 설정한 게시를 다시 만들어야 합니다.
- 결과 집합의
게시자에서 sp_helppublication을 실행하여 게시에서 끌어오기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_pull
값이1
이면 게시에서 끌어오기 구독을 지원합니다. allow_pull
값이0
이면 sp_changepublication을 실행하여allow_pull
에 대해@property
을,true
에 대해@value
를 지정합니다.
- 결과 집합의
구독자에서 sp_addpullsubscription을 실행합니다.
@publisher
및@publication
를 지정하고@update_mode
에 다음 값 중 하나를 지정합니다.sync tran
- 구독에서 즉시 업데이트를 사용하도록 설정합니다.failover
- 즉시 업데이트 구독을 설정하고 지연 업데이트를 장애 조치 옵션으로 설정합니다.
참고 항목
failover
를 사용하려면 게시에서 지연 업데이트 구독도 설정해야 합니다.구독자에서 sp_addpullsubscription_agent을 실행합니다. 다음 사항을 지정합니다.
- 구독자에서 배포 에이전트가 실행되는
@publisher
또는 RMO(복제 관리 개체)를 사용하여@publisher_db
및@publication
매개 변수 @job_login
및@job_password
에 대해 구독자에서 배포 에이전트가 실행되는 Microsoft Windows 자격 증명입니다.
참고 항목
Windows 통합 인증을 사용하여 만든 연결은 항상
@job_login
및@job_password
로 지정된 Windows 자격 증명을 사용합니다. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 구독자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 배포자에 연결합니다.- (선택 사항)
0
에 대한@distributor_security_mode
값과,@distributor_login
및@distributor_password
에 대한 Microsoft SQL Server 로그인 정보(배포자에 연결할 때 SQL Server 인증을 사용 해야하는 경우). - 이 구독의 배포 에이전트 작업 일정입니다.
- 구독자에서 배포 에이전트가 실행되는
구독 데이터베이스의 구독자에서 sp_link_publication을 실행합니다.
@publisher
,@publication
,@publisher_db
에 대한 게시 데이터베이스 이름을 지정하고@security_mode
에 다음 값 중 하나를 지정합니다.0
- 게시자에서 업데이트할 때 SQL Server 인증을 사용합니다. 이 옵션을 사용하려면@login
및@password
에 게시자에서 유효한 로그인을 지정해야 합니다.1
- 게시자에 연결할 때 구독자에서 변경 작업을 수행하는 사용자의 보안 컨텍스트를 사용합니다. 이 보안 모드와 관련된 제한 사항은 sp_link_publication을 참조하세요.2
sp_addlinkedserver를 사용하여 만든 기존의 사용자 정의 연결된 서버 로그인을 사용합니다.
게시자에서 sp_addsubscription을 실행하여 당겨받기 값
@publication
.@subscriber
,@destination_db
을@subscription_type
에 지정하고 3단계에서 지정한 값과 동일한 값을@update_mode
에 지정합니다. 이를 통해 게시자에서 끌어오기 구독을 등록합니다.
즉시 업데이트 밀어넣기 구독 만들기
게시자에서 sp_helppublication을 실행하여 게시에서 즉시 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_sync_tran
값이1
이면 게시는 즉시 업데이트 구독을 지원합니다. - 결과 집합의
allow_sync_tran
값이0
이면 즉시 업데이트 구독을 사용하도록 설정한 게시를 다시 만들어야 합니다.
- 결과 집합의
게시자에서 sp_helppublication을 실행하여 게시에서 밀어넣기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_push
값이1
이면 게시에서 밀어넣기 구독을 지원합니다. allow_push
값이0
이면 sp_changepublication을 실행하여allow_push
에 대해@property
을,true
에 대해@value
를 지정합니다.
- 결과 집합의
게시자에서 sp_addsubscription을 실행합니다.
@publication
,@subscriber
,@destination_db
및 다음 값 중 하나를@update_mode
에 지정합니다.sync tran
- 즉시 업데이트 지원을 설정합니다.failover
- 즉시 업데이트 지원을 설정하고 지연 업데이트를 장애 조치 옵션으로 설정합니다.
참고 항목
failover
를 사용하려면 게시에서 지연 업데이트 구독도 설정해야 합니다.게시자에서 sp_addpushsubscription_agent를 실행합니다. 다음 매개 변수를 지정합니다.
@subscriber
,@subscriber_db
및@publication
.@job_login
및@job_password
에 대해 배포자에서 배포 에이전트가 실행되는 Windows 자격 증명
참고 항목
Windows 통합 인증을 사용하여 만든 연결은 항상
@job_login
및@job_password
로 지정된 Windows 자격 증명을 사용합니다. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.- (선택 사항)
0
에 대한@subscriber_security_mode
값과,@subscriber_login
및@subscriber_password
에 대한 SQL Server 로그인 정보(구독자에 연결할 때 SQL Server 인증을 사용 해야하는 경우). - 이 구독의 배포 에이전트 작업 일정입니다.
구독 데이터베이스의 구독자에서 sp_link_publication을 실행합니다.
@publisher
,@publication
,@publisher_db
에 대한 게시 데이터베이스 이름을 지정하고@security_mode
에 다음 값 중 하나를 지정합니다.0
- 게시자에서 업데이트할 때 SQL Server 인증을 사용합니다. 이 옵션을 사용하려면@login
및@password
에 게시자에서 유효한 로그인을 지정해야 합니다.1
- 게시자에 연결할 때 구독자에서 변경 작업을 수행하는 사용자의 보안 컨텍스트를 사용합니다. 이 보안 모드와 관련된 제한 사항은 sp_link_publication을 참조하세요.2
sp_addlinkedserver를 사용하여 만든 기존의 사용자 정의 연결된 서버 로그인을 사용합니다.
지연 업데이트 끌어오기 구독 만들기
게시자에서 sp_helppublication을 실행하여 게시에서 지연 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_queued_tran
값이1
이면 게시는 즉시 업데이트 구독을 지원합니다. - 결과 집합의
allow_queued_tran
값이0
이면 지연 업데이트 구독을 사용하도록 설정한 게시를 다시 만들어야 합니다.
- 결과 집합의
게시자에서 sp_helppublication을 실행하여 게시에서 끌어오기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_pull
값이1
이면 게시에서 끌어오기 구독을 지원합니다. allow_pull
값이0
이면 sp_changepublication을 실행하여allow_pull
에 대해@property
을,true
에 대해@value
를 지정합니다.
- 결과 집합의
구독자에서 sp_addpullsubscription을 실행합니다.
@publisher
및@publication
를 지정하고@update_mode
에 다음 값 중 하나를 지정합니다.queued tran
- 지연 업데이트 구독을 설정합니다.queued failover
- 지연 업데이트 지원을 설정하고 즉시 업데이트를 장애 조치 옵션으로 설정합니다.
참고 항목
queued failover
를 사용하려면 게시에서 즉시 업데이트 구독도 설정해야 합니다. 즉시 업데이트로 장애 조치하려면 sp_link_publication을 사용하여 구독자의 변경 내용이 게시자에 복제되는 자격 증명을 정의해야 합니다.구독자에서 sp_addpullsubscription_agent을 실행합니다. 다음 매개 변수를 지정합니다.
- @publisher,
@publisher_db
및@publication
. @job_login
및@job_password
에 대해 구독자에서 배포 에이전트가 실행되는 Windows 자격 증명입니다.
참고 항목
Windows 통합 인증을 사용하여 만든 연결은 항상
@job_login
및@job_password
로 지정된 Windows 자격 증명을 사용합니다. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 구독자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 배포자에 연결합니다.- (선택 사항)
0
에 대한@distributor_security_mode
값과,@distributor_login
및@distributor_password
에 대한 SQL Server 로그인 정보(배포자에 연결할 때 SQL Server 인증을 사용 해야하는 경우). - 이 구독의 배포 에이전트 작업 일정입니다.
- @publisher,
게시자에서 , ,
@publication
를 지정하고@subscriber
에 대한 가져오기 값,@destination_db
에 대해 3단계에서 지정한 동일한 값을 지정하여@subscription_type
sp_addsubscription@update_mode
을 실행하고 게시자에서 구독자를 등록합니다. 이를 통해 게시자에서 끌어오기 구독을 등록합니다.
지연 업데이트 밀어넣기 구독 만들기
게시자에서 sp_helppublication을 실행하여 게시에서 지연 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합의 allow_queued_tran 값이 1이면 게시는 즉시 업데이트 구독을 지원합니다.
- 결과 집합의 allow_queued_tran 값이 0이면 지연 업데이트 구독을 사용하도록 설정한 게시를 다시 만들어야 합니다. 자세한 내용은 트랜잭션 게시에 대해 업데이트 구독을 사용하도록 설정하는 방법을 참조하세요(복제 Transact-SQL 프로그래밍).
게시자에서 sp_helppublication을 실행하여 게시에서 밀어넣기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_push
값이1
이면 게시에서 밀어넣기 구독을 지원합니다. allow_push
값이0
이면 sp_changepublication을 실행하여@property
에 allow_push를 지정하고true
값을@value
에 지정합니다.
- 결과 집합의
게시자에서 sp_addsubscription을 실행합니다.
@publication
,@subscriber
,@destination_db
및 다음 값 중 하나를@update_mode
에 지정합니다.queued tran
- 지연 업데이트 구독을 설정합니다.queued failover
- 지연 업데이트 지원을 설정하고 즉시 업데이트를 장애 조치 옵션으로 설정합니다.
참고 항목
queued failover 옵션을 사용하려면 게시에서 즉시 업데이트 구독도 설정해야 합니다. 즉시 업데이트로 장애 조치하려면 sp_link_publication을 사용하여 구독자의 변경 내용이 게시자에 복제되는 자격 증명을 정의해야 합니다.
게시자에서 sp_addpushsubscription_agent를 실행합니다. 다음 매개 변수를 지정합니다.
@subscriber
,@subscriber_db
및@publication
.@job_login
및@job_password
에 대해 배포자에서 배포 에이전트가 실행되는 Windows 자격 증명
참고 항목
Windows 통합 인증을 사용하여 만든 연결은 항상
@job_login
및@job_password
로 지정된 Windows 자격 증명을 사용합니다. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.- (선택 사항)
0
에 대한@subscriber_security_mode
값과,@subscriber_login
및@subscriber_password
에 대한 SQL Server 로그인 정보(구독자에 연결할 때 SQL Server 인증을 사용 해야하는 경우). - 이 구독의 배포 에이전트 작업 일정입니다.
지연 업데이트 충돌 해결 옵션 설정
게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 지연 업데이트 구독을 지원하는 게시에 충돌 해결 옵션을 설정합니다. 이 대화 상자에 액세스하는 방법은 게시 속성 보기 및 수정을 참조하세요.
게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 충돌 해결 정책 옵션에 대해 다음 값 중 하나를 선택합니다.
- 게시자 변경 내용 유지
- 구독자 변경 내용 유지
- 구독 다시 초기화
예시
이 예에서는 즉시 업데이트 구독을 지원하는 게시에 대해 즉시 업데이트 끌어오기 구독을 만듭니다. 로그인 및 암호 값은 sqlcmd 스크립팅 변수를 사용하여 런타임에 제공됩니다.
참고 항목
이 스크립트는 sqlcmd 스크립팅 변수를 사용합니다. 이는 $(MyVariable)
형식입니다. 명령줄 및 SQL Server Management Studio에서 스크립팅 변수를 사용하는 방법에 대한 자세한 내용은 복제 시스템 저장 프로시저 개념 항목의 복제 스크립트 실행 섹션을 참조하세요.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS NVARCHAR(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2022';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);
-- At the subscription database, create a pull subscription to a transactional
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@update_mode = N'failover',
@subscription_type = N'pull';
-- Add an agent job to synchronize the pull subscription,
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Add a Windows Authentication-based linked server that enables the
-- Subscriber-side triggers to make updates at the Publisher.
EXEC sp_link_publication
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@security_mode = 0,
@login = @login,
@password = @password;
GO
USE AdventureWorks2022;
GO
-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriptionDB = N'AdventureWorks2022Replica';
SET @subscriber = $(SubServer);
-- At the Publisher, register the subscription, using the defaults.
USE AdventureWorks2022;
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'pull',
@update_mode = N'failover';
GO