SQL Server 2000 트랜잭션 복제를 설정할 때 게시자 데이터베이스에 대한 액세스를 비활성화해야 합니까?

SQL Server 2000 트랜잭션 복제를 설정할 때 게시자 데이터베이스에 대한 액세스를 비활성화해야 합니까?

지속적인 업데이트가 있는 프로덕션 데이터베이스가 있고 트랜잭션 복제를 사용하여 이 데이터베이스가 다른 서버에 게시되도록 구성했습니다.

트랜잭션 복제를 구성할 때 다음을 수행했습니다.

  • 소스 데이터베이스에 대한 액세스를 비활성화합니다.
  • 원본 DB를 백업한 후 구독 서버로 복원
  • 복제 구성
  • 우리 앱에 대한 DB 액세스를 다시 활성화합니다

이 접근 방식의 문제점은 가동 중지 시간에 일정을 계획하고, 우리가 실행하는 다양한 시간 예약 작업을 모두 일시 중지해야 하며, 이 데이터베이스에 종속된 다양한 애플리케이션에 대한 액세스를 종료해야 한다는 것입니다.

게시 데이터베이스에 대한 액세스를 비활성화하지 않고 트랜잭션 복제를 구성하면 구독자 데이터베이스가 올바르게 따라잡을 수 있습니까? 즉 모든 DML 문이 게시자의 대기열에 있고 구독자가 준비되자마자 선택되어 실행됩니까?

답변1

간단한 대답은 아니요입니다. 시스템 등에 대한 액세스를 비활성화할 필요가 없습니다. 작동 이유와 방법은 다음과 같습니다... 복제를 설정할 때 게시자는 사용자가 데이터를 생성하는 바로 그 순간에 데이터의 스냅샷을 생성합니다. 출판. 마지막 스냅샷이 생성된 이후 모든 트랜잭션을 포착하는 트랜잭션 복제와 동시에 실행되는 로그 리더도 있습니다. 따라서... 구독자가 생성되면 기본적으로 2단계 프로세스가 진행됩니다.

1단계: 스냅샷은 구독자 데이터베이스에 스키마와 데이터를 생성하는 구독자에 적용됩니다.

2단계: 그런 다음 구독자 데이터베이스를 최신 데이터로 업데이트하기 위해 스냅샷 이후의 트랜잭션이 구독자에 순서대로 적용됩니다.

따라서 기본적으로 아니요, 새 구독자를 생성하기 위해 수행 중인 다른 모든 작업을 수행할 필요가 없습니다.

다른 필요한 사항이 있으면 알려주시기 바랍니다.

감사해요!

-VM

관련 정보