2014-03-04 1 views
0

회계 응용 프로그램 용 여러 테이블을 복제하도록 SQL Server 복제를 설정했습니다. 초기 스냅 샷과 함께 트랜잭션 복제를 사용하고 있습니다. 약 100 명의 가입자가 있습니다.복제 된 테이블을 삭제/생성하는 가장 좋은 방법

복제 된 테이블을 업데이트하는 가장 좋은 방법을 찾으려고합니다. 지금 우리가 업데이트를 수행 할 때 최종 사용자는 데이터를 임시 테이블로 이동하고 테이블을 삭제 한 다음 새 테이블 정의를 기반으로 테이블을 다시 작성하여 테이블을 업그레이드하는 유틸리티를 실행해야합니다. 문제는 복제 된 테이블을 삭제할 수 없다는 것입니다.

지금까지 내가 조사하고 몇 가지 시도했습니다. 복제 된 테이블을 삭제/생성하기 위해 알아 낸 항목에서 기사를 삭제해야하지만 모든 구독이 삭제 된 경우에만 삭제할 수 있습니다. 즉, 테이블을 업그레이드하려면 모든 기사와 구독을 삭제 한 다음 게시를 완전히 다시 만들어야합니다.

꽤 많은 리팩토링이 필요하기 때문에 이것은 고통입니다. 또한 주된 관심사는 모든 100 명의 가입자에게 복제를 다시 수행하는 데 걸리는 시간입니다. 그래서 복제 된 테이블을 삭제/생성하는 더 좋은 방법이 있는지 궁금합니다.

감사합니다, Makolyte

+0

http://social.msdn.microsoft.com/Forums/en-US/eadc7694-c587-48b3-9c64-595c694c699f/dropping-table-in-after-transaction-log-replication?forum=sqldisasterrecovery # 56d0b44b-0ff8-4081-8be3-92d4582395eb – abhi

답변

1

당신이 그렇게 자주 스키마를 변화하고 테이블을 복제하는 이유 나는 질문 것입니다. 즉, 몇 가지 옵션이 있습니다.

  1. 테이블을 복제와 호환되도록 변경하십시오. Making Schema Changes on Publication Databases을 참조하십시오.
  2. 그럴 수 없다면 sp_dropsubscription을 사용하여 아티클의 가입자를 드롭하고 sp_droparticle을 사용하여 아티클을 삭제하십시오. 테이블을 변경하고 sp_addarticle을 사용하여 아티클을 다시 추가하고 sp_addsubscription을 사용하여 구독자를 다시 추가 한 다음 스냅 샷 에이전트를 실행하여 새로 추가 된 아티클의 스냅 샷을 만듭니다.
+0

첫 번째 옵션은 이전 변환 도구를 많이 변경해야합니다. 두 번째 옵션을 사용하면 스냅 샷이 무효화되므로 모든 가입자를 다시 초기화해야합니까? 아니면 그것은 트랜잭션 복제 이후 그들은 괜찮을까요? – Makolyte

+0

일단 구독자를 삭제하면 더 이상 구독을하지 않기 때문에 다시 초기화해야합니다. –

관련 문제