비고
이 기능은 이후 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서 이 기능을 사용하지 말고 현재 이 기능을 사용하는 애플리케이션을 수정할 계획입니다.
트랜잭션 복제를 사용하면 즉시 또는 지연 업데이트 구독을 사용하여 구독자에서 변경한 내용을 게시자에게 다시 전파할 수 있습니다. 복제 저장 프로시저를 사용하여 프로그래밍 방식으로 업데이트 구독을 만들 수 있습니다.
새 구독 마법사의 업데이트 가능한 구독 페이지에서 구독을 구성합니다. 이 페이지는 업데이트할 수 있는 구독에 대해 트랜잭션 게시를 사용하도록 설정한 경우에만 사용할 수 있습니다. 업데이트할 수 있는 구독을 사용하도록 설정하는 방법에 대한 자세한 내용은 트랜잭션 게시에 대한 업데이트 구독 사용을 참조하세요.
게시자에서 업데이트 가능한 구독 구성
Microsoft SQL Server Management Studio에서 게시자에 연결한 다음 서버 노드를 확장합니다.
복제 폴더를 확장한 다음 로컬 게시 폴더를 확장합니다.
구독 업데이트에 사용할 수 있는 트랜잭션 게시를 마우스 오른쪽 단추로 클릭한 다음 새 구독을 클릭합니다.
마법사의 페이지에 따라 배포 에이전트가 실행되어야 하는 위치와 같은 구독에 대한 옵션을 지정합니다.
새 구독 마법사의 업데이트 가능한 구독 페이지에서 복제가 선택되었는지 확인합니다.
게시자에서 커밋 드롭다운 목록에서 옵션을 선택합니다.
- 즉시 업데이트 구독을 사용하려면 변경 내용을 동시에 커밋합니다. 옵션을 선택하고 게시가 대기 중인 업데이트 구독을 허용하는 경우(새 게시 마법사를 사용하여 만든 게시의 기본 설정), 구독 속성 update_mode는 failover로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 대기 업데이트로 전환할 수 있습니다.
- 지연 업데이트 구독을 사용하려면 큐 변경 내용을 선택하고 가능하면 커밋합니다. 이 옵션을 선택하면 게시가 즉시 구독 업데이트를 허용하고 (새 게시 마법사로 만든 게시의 기본값) 구독자가 SQL Server 2005 이상 버전을 실행하는 경우, 구독 속성 update_mode가 대기 장애 조치 모드로 설정됩니다. 이 모드를 사용하면 필요한 경우 나중에 즉시 업데이트로 전환할 수 있습니다.
업데이트 모드 전환에 대한 자세한 내용은 업데이트 할 수 있는 트랜잭션 구독에 대한 업데이트 모드 간 전환을 참조하세요.
업데이트할 수 있는 구독의 로그인 페이지는 즉시 업데이트를 사용하거나 update_mode가 대기 중인 장애 조치(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가 대기 중 장애 조치전환(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을 실행하고,@property에 대해allow_pull를 지정하고@value에 대해true를 지정합니다.
- 결과 집합의
구독자에서 sp_addpullsubscription 실행합니다.
@publisher및@publication를 지정하고,@update_mode에 대해 다음 값 중 하나를 선택하세요.-
sync tran- 즉시 업데이트할 수 있도록 구독을 사용하도록 설정합니다. -
failover- 구독이 즉시 업데이트를 가능하게 하며, 장애 조치(failover) 옵션으로 지연 업데이트를 사용할 수 있도록 합니다.
비고
-
failover에서는 지연 업데이트 구독에도 게시를 사용하도록 설정해야 합니다.
구독자에서 sp_addpullsubscription_agent 실행합니다. 다음을 지정합니다.
-
@publisher,@publisher_db및@publication매개 변수입니다. - 구독자에서 Microsoft Windows 자격 증명을 사용하여 실행되는 배포 에이전트의
@job_login@job_password입니다.
비고
-
Windows 통합 인증을 사용하여 만든 연결은 항상 지정된
@job_loginWindows 자격 증명을 사용하여 만들어집니다@job_password. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 구독자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 배포자에 연결합니다.
* (Optional) A value of `0` for `@distributor_security_mode` and the Microsoft SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor.
* A schedule for the Distribution Agent job for this subscription.
구독 데이터베이스의 구독자에서 sp_link_publication을 실행합니다.
@publisher을(를) 명시하고,@publisher_db출판 데이터베이스의 이름과@security_mode중 하나의 값을 명시하십시오.-
0- 게시자에서 업데이트할 때 SQL Server 인증을 사용합니다. 이 옵션을 사용하려면 게시자 및 게시자@login@password에서 유효한 로그인을 지정해야 합니다. -
1- 게시자에 연결할 때 구독자에서 변경을 수행하는 사용자의 보안 컨텍스트를 사용합니다. 이 보안 모드와 관련된 제한 사항은 sp_link_publication을 참조하세요. -
2- sp_addlinkedserver 사용하여 만든 기존 사용자 정의 연결된 서버 로그인을 사용합니다.
-
게시자에서 sp_addsubscription을 실행할 때
@publication,@subscriber,@destination_db을 지정하고,@subscription_type에는 끌어오기 값을,@update_mode에는 3단계에서 지정한 것과 동일한 값을 지정합니다.
그러면 게시자에 끌어오기 구독이 등록됩니다.
즉시 업데이트 푸시 구독 만들기
게시자에서 sp_helppublication을 실행하여 게시가 즉시 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_sync_tran값이1면 게시는 즉시 업데이트 구독을 지원합니다. - 결과 집합의
allow_sync_tran값이0면 즉시 업데이트 구독을 사용하도록 설정하여 게시를 다시 만들어야 합니다.
- 결과 집합의
게시자에서 sp_helppublication을 실행하여 게시물이 밀어넣기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_push값이1이면 게시물이 푸시 구독을 지원합니다. - 값이
allow_push일 때,0이면 sp_changepublication을 실행하여@property에 대해allow_push을(를) 그리고@value에 대해true을(를) 지정합니다.
- 결과 집합의
게시자에서 sp_addsubscription 실행합니다. 지정하세요:
@publication,@subscriber,@destination_db및@update_mode에 대해 다음 값 중 하나:-
sync tran- 즉시 업데이트를 지원할 수 있습니다. -
failover- 즉시 업데이트를 지원하며, 장애 조치(failover) 옵션으로 대기 업데이트를 사용할 수 있습니다.
비고
-
failover여러 구독 업데이트 대기열에서도 게시 기능이 활성화되어야 합니다.
게시자에서 sp_addpushsubscription_agent 실행합니다. 다음 매개 변수를 지정합니다.
-
@subscriber,@subscriber_db및@publication. - 배포자에서
@job_login및@job_password을(를) 사용하여 실행되는 배포 에이전트의 Windows 자격 증명입니다.
비고
-
Windows 통합 인증을 사용하여 만든 연결은 항상 지정된
@job_loginWindows 자격 증명을 사용하여 만들어집니다@job_password. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.
* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber.
* A schedule for the Distribution Agent job for this subscription.
구독 데이터베이스의 구독자에서 sp_link_publication을 실행합니다.
@publisher,@publication,@publisher_db의 출판 데이터베이스 이름을 지정하고,@security_mode중 하나의 값을 지정합니다.-
0- 게시자에서 업데이트할 때 SQL Server 인증을 사용합니다. 이 옵션을 사용하려면 게시자의@login및@password에 대한 유효한 로그인을 지정해야 합니다. -
1- 게시자에 연결할 때 Subscriber에서 변경을 수행하는 사용자의 보안 컨텍스트를 사용하십시오. 이 보안 모드와 관련된 제한 사항은 sp_link_publication을 참조하세요. -
2- sp_addlinkedserver 사용하여 만든 기존 사용자 정의 연결된 서버 로그인을 사용합니다.
-
대기열에서 업데이트를 끌어오는 구독 만들기
게시자에서 게시된 것이 sp_helppublication을 실행하여 지연 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_queued_tran값이1면 게시는 즉시 업데이트 구독을 지원합니다. - 결과 집합의
allow_queued_tran값이0면 대기 중인 업데이트 구독을 사용하도록 설정하여 게시를 다시 만들어야 합니다.
- 결과 집합의
게시자에서 게시가 sp_helppublication 실행하여 끌어오기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_pull값이1일 때, 발행은 끌어오기 구독을 지원합니다. - 값
allow_pull이0이면,allow_pull을@property으로 지정하고,true을@value으로 지정하여 sp_changepublication을 실행하십시오.
- 결과 집합의
구독자에서 sp_addpullsubscription 실행합니다.
@publisher및@publication를 지정하고,@update_mode에 대해 다음 값 중 하나를 지정합니다.-
queued tran- 지연 업데이트에 대한 구독을 사용하도록 설정합니다. -
queued failover- 즉시 업데이트를 장애 조치(failover) 옵션으로 사용하여 대기열 업데이트를 지원할 수 있습니다.
비고
-
queued failover에서는 즉시 업데이트 구독을 위해 출판이 활성화되어야 합니다. 즉시 업데이트로 전환하려면, 구독자의 변경 사항을 게시자에게 복제하는 자격 증명을 정의하기 위해 sp_link_publication을 사용해야 합니다.
구독자에서 sp_addpullsubscription_agent 실행합니다. 다음 매개 변수를 지정합니다.
-
@publisher,
@publisher_db및@publication. - 구독자에서
@job_login및@job_passwordWindows 자격 증명을 사용하여 배포 에이전트가 실행됩니다.
비고
-
@publisher,
Windows 통합 인증을 사용하여 만든 연결은 항상 지정된
@job_loginWindows 자격 증명을 사용하여 만들어집니다@job_password. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 구독자에 대한 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 배포자에 연결합니다.
* (Optional) A value of `0` for `@distributor_security_mode` and the SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor.
* A schedule for the Distribution Agent job for this subscription.
- 게시자에서 sp_addsubscriber를 실행하여 게시자에 구독자를 등록하고,
@publication,@subscriber,@destination_db,@subscription_type에 대해 끌어오기를 값으로 지정하며,@update_mode에는 3단계에서 지정한 것과 동일한 값을 입력합니다.
그러면 게시자에 끌어오기 구독이 등록됩니다.
대기열 업데이트 푸시 구독을 생성하려면
게시자에서 게시된 것이 sp_helppublication을 실행하여 지연 업데이트 구독을 지원하는지 확인합니다.
- 결과 집합에서 allow_queued_tran의 값이 1이면, 이는 게시가 즉시 업데이트 구독을 지원하는 것입니다.
- 결과 집합의 allow_queued_tran 값이 0이면 지연 업데이트 구독을 사용하도록 설정하여 게시를 다시 만들어야 합니다. 자세한 내용은 트랜잭션 게시에 대한 구독 업데이트를 활성화하는 방법(복제 Transact-SQL 프로그래밍)을 참조하세요.
게시자에서 sp_helppublication을 실행하여 게시물이 밀어넣기 구독을 지원하는지 확인합니다.
- 결과 집합의
allow_push값이1이면 게시물이 푸시 구독을 지원합니다. - 만약
allow_push의 값이0이라면,@property의 allow_push와@value의true를 지정하여 sp_changepublication을 실행합니다.
- 결과 집합의
게시자에서 sp_addsubscription 실행합니다. 지정하세요:
@publication,@subscriber,@destination_db및@update_mode에 대해 다음 값 중 하나:-
queued tran- 지연 업데이트에 대한 구독을 사용하도록 설정합니다. -
queued failover- 즉시 업데이트를 장애 조치(failover) 옵션으로 사용하여 대기열 업데이트를 지원할 수 있습니다.
비고
-
대기 중인 장애 조치 옵션을 사용하려면 게시가 즉각 업데이트 구독으로 설정되어 있어야 합니다. 즉시 업데이트로 전환하려면, 구독자의 변경 사항을 게시자에게 복제하는 자격 증명을 정의하기 위해 sp_link_publication을 사용해야 합니다.
게시자에서 sp_addpushsubscription_agent 실행합니다. 다음 매개 변수를 지정합니다.
-
@subscriber,@subscriber_db및@publication. - 배포자에서
@job_login및@job_password을(를) 사용하여 실행되는 배포 에이전트의 Windows 자격 증명입니다.
비고
-
Windows 통합 인증을 사용하여 만든 연결은 항상 지정된
@job_loginWindows 자격 증명을 사용하여 만들어집니다@job_password. 배포 에이전트는 항상 Windows 통합 인증을 사용하여 배포자에 로컬 연결을 만듭니다. 기본적으로 에이전트는 Windows 통합 인증을 사용하여 구독자에 연결합니다.
* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber.
* A schedule for the Distribution Agent job for this subscription.
예시
이 예제에서는 즉시 업데이트 구독을 지원하는 발행물에 대해 즉시 업데이트되는 끌어오기 구독을 생성합니다. 로그인 및 암호 값은 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'AdventureWorks2008R2';
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 AdventureWorks2008R2;
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'AdventureWorks2008R2Replica';
SET @subscriber = $(SubServer);
-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'pull',
@update_mode = N'failover';
GO
지연 업데이트 충돌 해결 옵션 설정(SQL Server Management Studio)
게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 대기 중인 업데이트 구독을 지원하는 간행물에 대한 충돌 해결 옵션을 설정합니다. 이 대화 상자에 액세스하는 방법에 대한 자세한 내용은 게시 속성 보기 및 수정을 참조하세요.
지연 업데이트 충돌 해결 옵션을 설정하려면
-
게시 속성 - <게시> 대화 상자의 구독 옵션 페이지에서 충돌 해결 정책 옵션에 대해 다음 값 중 하나를 선택합니다.
- 게시자 변경 유지
- 구독자 변경 내용 유지
- 구독 다시 초기화
- OK를 클릭합니다.