트랜잭션 게시에 업데이트할 수 있는 구독 만들기
적용 대상:SQL Server
참고 항목
이 기능은 2012년부터 2016년까지 SQL Server 버전에서 지원되는 기본. 이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
트랜잭션 복제에서는 즉시 업데이트 구독 또는 지연 업데이트 구독을 사용하여 구독자에서 변경된 내용을 게시자에 다시 전파할 수 있습니다. 복제본(replica)tion 저장 프로시저를 사용하여 프로그래밍 방식으로 업데이트 구독을 만들 수 있습니다.
새 구독 마법사의 Updatable 구독 페이지에서 호환 가능한 구독을 구성합니다. 이 페이지는 업데이트할 수 있는 구독에 대해 트랜잭션 게시를 사용하도록 설정한 경우에만 사용할 수 있습니다. 업데이트할 수 있는 구독을 사용하도록 설정하는 방법에 대한 자세한 내용은 트랜잭션 게시에 대해 업데이트할 수 있는 구독 설정을 참조하세요.
게시자에서 복구할 수 있는 구독 구성
Microsoft 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 게시자 찾기를 선택합니다.
서버로 커넥트 대화 상자에서 게시자에 커넥트.
게시 페이지에서 구독을 업데이트할 수 있도록 설정된 트랜잭션 게시를 선택합니다.
마법사의 페이지에 따라 배포 에이전트 실행해야 하는 위치와 같은 구독에 대한 옵션을 지정합니다.
새 구독 마법사의 Updatable 구독 페이지에서 복제가 선택되어 있는지 확인합니다.
게시자에서 커밋 드롭다운 목록에서 옵션을 선택합니다.
즉시 업데이트 구독을 사용하려면 변경 내용을 동시에 커밋합니다. 이 옵션을 선택하고 게시에서 대기 중인 업데이트 구독(새 게시 마법사로 만든 게시의 기본값)을 허용하는 경우 구독 속성 update_mode 장애 조치(failover)로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 대기 업데이트로 전환할 수 있습니다.
지연 업데이트 구독을 사용하려면 큐 변경 내용을 선택하고 가능하면 커밋합니다. 이 옵션을 선택하고 게시에서 즉시 업데이트 구독(새 게시 마법사로 만든 게시의 기본값)을 허용하고 구독자가 SQL Server 2005 이상 버전을 실행하는 경우 구독 속성 update_mode 대기 중인 장애 조치(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) 옵션으로 즉시 업데이트할 수 있도록 합니다.
참고 항목
failover
에서는 지연 업데이트 구독에도 게시를 사용하도록 설정해야 합니다.구독자에서 sp_addpullsubscription_agent 실행합니다. 다음 사항을 지정합니다.
- 구독자에서 배포 에이전트가 실행되는
@publisher
또는 RMO(복제 관리 개체)를 사용하여@publisher_db
및@publication
매개 변수 - 구독자에서 배포 에이전트 실행되는
@job_login
Microsoft Windows 자격 증명입니다.@job_password
참고 항목
Windows 통합 인증을 사용하여 만든 커넥트 항상 지정된
@job_login
Windows 자격 증명을 사용하여 만들어집니다@job_password
. 배포 에이전트 항상 Windows 통합 인증을 사용하여 구독자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 배포자에 연결합니다.- (선택 사항) 배포자에 연결할 때 SQL Server 인증을 사용해야 하는 경우 및 배포자에 대한
@distributor_password
@distributor_login
Microsoft SQL Server 로그인 정보의 값0
@distributor_security_mode
입니다. - 이 구독의 배포 에이전트 작업에 대한 일정입니다.
- 구독자에서 배포 에이전트가 실행되는
구독 데이터베이스의 구독자에서 sp_link_publication 실행합니다.
@publisher
,@publication
,@publisher_db
에 대한 게시 데이터베이스 이름을 지정하고@security_mode
에 다음 값 중 하나를 지정합니다.0
- 게시자에서 업데이트할 때 SQL Server 인증을 사용합니다. 이 옵션을 사용하려면 게시자 및 게시자@login
@password
에서 유효한 로그인을 지정해야 합니다.1
- 게시자에 연결할 때 구독자에서 변경한 사용자의 보안 컨텍스트를 사용합니다. 이 보안 모드와 관련된 제한 사항은 sp_link_publication 참조하세요.2
sp_addlinkedserver를 사용하여 만든 기존의 사용자 정의 연결된 서버 로그인을 사용합니다.
게시자에서 , ,
@destination_db
@subscriber
끌어오기@subscription_type
값 및 3@update_mode
단계에서 지정한 것과 동일한 값을 지정하는@publication
sp_addsubscription 실행합니다. 그러면 게시자에 끌어오기 구독이 등록됩니다.
즉시 업데이트 푸시 구독 만들기
게시자에서 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 실행합니다. 에 대해 ,
@subscriber
및@destination_db
다음 값 중 하나를 지정@publication
합니다@update_mode
.sync tran
- 즉시 업데이트 지원을 설정합니다.failover
- 지연 업데이트를 장애 조치(failover) 옵션으로 즉시 업데이트할 수 있도록 지원합니다.
참고 항목
failover
에서는 지연 업데이트 구독에도 게시를 사용하도록 설정해야 합니다.게시자에서 sp_addpushsubscription_agent를 실행합니다. 다음 매개 변수를 지정합니다.
@subscriber
,@subscriber_db
및@publication
.@job_login
및@job_password
에 대해 배포자에서 배포 에이전트가 실행되는 Windows 자격 증명
참고 항목
Windows 통합 인증을 사용하여 만든 커넥트 항상 지정된
@job_login
Windows 자격 증명을 사용하여 만들어집니다@job_password
. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.- (선택 사항) 구독자에 연결할 때 SQL Server 인증을 사용해야 하는 경우의 값
0
@subscriber_security_mode
및@subscriber_password
SQL Server 로그인 정보@subscriber_login
입니다. - 이 구독의 배포 에이전트 작업에 대한 일정입니다.
구독 데이터베이스의 구독자에서 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
- 즉시 업데이트를 장애 조치(failover) 옵션으로 사용하여 지연 업데이트를 지원할 수 있습니다.
참고 항목
queued failover
에서는 즉시 업데이트 구독에 게시를 사용하도록 설정해야 합니다. 즉시 업데이트로 장애 조치(failover)하려면 sp_link_publication 사용하여 구독자의 변경 내용이 게시자에 복제본(replica) 자격 증명을 정의해야 합니다.구독자에서 sp_addpullsubscription_agent 실행합니다. 다음 매개 변수를 지정합니다.
- @publisher,
@publisher_db
및@publication
. - 구독자에서 배포 에이전트 실행되는
@job_login
Windows 자격 증명입니다.@job_password
참고 항목
Windows 통합 인증을 사용하여 만든 커넥트 항상 지정된
@job_login
Windows 자격 증명을 사용하여 만들어집니다@job_password
. 배포 에이전트 항상 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 실행하고 allow_push@property
true
@value
지정합니다.
- 결과 집합의
게시자에서 sp_addsubscription 실행합니다. 에 대해 ,
@subscriber
및@destination_db
다음 값 중 하나를 지정@publication
합니다@update_mode
.queued tran
- 지연 업데이트 구독을 설정합니다.queued failover
- 즉시 업데이트를 장애 조치(failover) 옵션으로 사용하여 지연 업데이트를 지원할 수 있습니다.
참고 항목
queued failover 옵션을 사용하려면 게시에서 즉시 업데이트 구독도 설정해야 합니다. 즉시 업데이트로 장애 조치(failover)하려면 sp_link_publication 사용하여 구독자의 변경 내용이 게시자에 복제본(replica) 자격 증명을 정의해야 합니다.
게시자에서 sp_addpushsubscription_agent를 실행합니다. 다음 매개 변수를 지정합니다.
@subscriber
,@subscriber_db
및@publication
.@job_login
및@job_password
에 대해 배포자에서 배포 에이전트가 실행되는 Windows 자격 증명
참고 항목
Windows 통합 인증을 사용하여 만든 커넥트 항상 지정된
@job_login
Windows 자격 증명을 사용하여 만들어집니다@job_password
. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.- (선택 사항) 구독자에 연결할 때 SQL Server 인증을 사용해야 하는 경우의 값
0
@subscriber_security_mode
및@subscriber_password
SQL Server 로그인 정보@subscriber_login
입니다. - 이 구독의 배포 에이전트 작업에 대한 일정입니다.
지연 업데이트 충돌 해결 옵션 설정
게시 속성 - <게시 대화 상자의 구독 옵션 페이지에서 대기 중인 업데이트 구독을 지원하는 게시>에 대한 충돌 해결 옵션을 설정합니다. 이 대화 상자에 액세스하는 방법은 게시 속성 보기 및 수정을 참조하세요.
게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 충돌 해결 정책 옵션에 대해 다음 값 중 하나를 선택합니다.
- 게시자 변경 내용 유지
- 구독자 변경 내용 유지
- 구독 다시 초기화
예시
이 예에서는 즉시 업데이트 구독을 지원하는 게시에 대해 즉시 업데이트 끌어오기 구독을 만듭니다. 로그인 및 암호 값은 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
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기