Share via


SQL Server 복제의 주요 변경 내용

이 항목에서는 SQL Server 복제의 주요 변경 내용에 대해 설명합니다. 이러한 변경 내용에 따라 이전 버전의 SQL Server에 기반을 둔 응용 프로그램, 스크립트 또는 기능을 사용하지 못할 수도 있습니다. 이러한 문제는 업그레이드할 때 발생할 수 있습니다. 자세한 내용은 업그레이드 관리자를 사용하여 업그레이드 준비를 참조하십시오.

SQL Server 2005 및 SQL Server 2008의 주요 변경 내용

이 섹션에서는 SQL Server 2005 또는 SQL Server 2008의 복제 기능 중 크게 변경된 사항을 설명합니다.

모든 복제 유형에 영향을 주는 주요 변경

다음 주요 변경은 모든 복제 유형에 적용됩니다.

기능

설명

복제 스크립트에 필요한 변경

복제 에이전트 보안 모델이 SQL Server 2000에서 변경되었습니다. 보안 모델에 대한 자세한 내용은 복제 에이전트 보안 모델을 참조하십시오. SQL Server 2005의 sysadmin 고정 서버 역할의 멤버로 SQL Server 2000 또는 SQL Server 7.0에서 작성한 복제 스크립트를 실행하는 경우 스크립트는 제대로 실행됩니다. dbo 고정 데이터베이스 역할 또는 다른 역할의 멤버인 경우 스크립트는 실패하므로 업그레이드해야 합니다. 스크립트 업그레이드에 대한 자세한 내용은 방법: 복제 스크립트 업그레이드(복제 Transact-SQL 프로그래밍)를 참조하십시오. sysadmin 역할의 멤버에 의해 실행되는 스크립트는 반드시 업그레이드할 필요는 없지만 향상된 보안 기능을 활용하기 위해 업그레이드하는 것이 좋습니다.

복제 에이전트에 대한 로컬 연결

SQL Server 2005로의 업그레이드 시 SQL Server 인증을 사용하는 모든 로컬 연결은 Windows 인증을 사용하도록 수정됩니다. 로컬 연결은 에이전트가 있는 컴퓨터에서 실행되는 SQL Server 인스턴스에 대해 에이전트가 설정하는 연결을 말합니다. 예를 들어 끌어오기 구독을 위한 병합 에이전트는 구독자에서 실행되므로 구독자에 대해 설정되는 연결이 로컬 연결이 됩니다.

이전 SQL Server 버전에서 에이전트는 기본적으로 SQL Server 에이전트 서비스 계정 컨텍스트에서 실행되었습니다. 업그레이드 후 로컬 연결은 이 계정의 컨텍스트에서 설정됩니다. SQL Server 2005에서는 복제 에이전트를 실행하여 데이터베이스 및 기타 리소스로 Windows 통합 연결을 설정하는 각 계정을 더욱 세밀하게 제어할 수 있습니다. 각 에이전트에 대해 서로 다른 계정을 지정할 수 있습니다. 업그레이드 후에는 각 에이전트에 대해 서로 다른 계정을 지정하는 것이 좋습니다. 자세한 내용은 복제된 데이터베이스 업그레이드 시 고려 사항복제 에이전트 보안 모델을 참조하십시오.

ActiveX 컨트롤

모든 ActiveX 컨트롤은 스크립팅 및 초기화에 안전하지 않은 것으로 표시됩니다.

스냅숏 에이전트 ActiveX 컨트롤은 SQL Server 2005에서 사용할 수 없습니다. 대신 관리되는 새 스냅숏 에이전트를 사용하십시오. 자세한 내용은 SnapshotGenerationAgent방법: 초기 스냅숏 만들기(RMO 프로그래밍)를 참조하십시오.

distributor_admin 계정 암호

게시자와 원격 배포자 간의 트러스트된 연결은 두 서버 간에 암호를 필요로 하지 않았기 때문에 더 이상 지원되지 않습니다. SQL Server 2000 서비스 팩 3 이전 버전에서는 트러스트된 연결이 기본적으로 사용되었습니다. 원격 배포자를 사용하는 경우 SQL Server 2005로 업그레이드하기 전에 트러스트된 연결을 트러스트되지 않은 연결로 변환하십시오. 이 문제는 로컬 배포자를 사용하는 게시자에는 영향을 주지 않습니다. distributor_admin 계정에 대한 자세한 내용은 배포자 보안 설정을 참조하십시오.

사용 중인 연결 유형을 확인하려면

  • 배포자에서 sp_helpdistpublisher를 실행합니다. trusted 열 값이 1이면 트러스트되지 않은 연결로 변경해야 합니다.

트러스트되지 않은 연결로 변경하려면

  1. 배포자에서 sp_changedistpublisher를 실행하여 @property 매개 변수 값은 'trusted'로 지정하고 @value 매개 변수 값은 'False'로 지정합니다.

    참고참고
    SQL Server 2000 온라인 설명서의 일부 버전에서는 @property에 대한 유효한 값으로 'trusted'를 나열하지 않습니다. 그러나 이 값은 모든 SQL Server 2000 릴리스에 유효합니다.
  2. 게시자와 배포자 모두에서 sp_changedistributor_password를 실행하여 @password 매개 변수에 강력한 암호를 지정합니다.

SQL Server Express에는 SQL Server 에이전트가 포함되지 않음

SQL Server Express로 업그레이드하는 경우 SQL Server Express에는 SQL Server 에이전트가 포함되지 않으므로 복제 동기화를 다시 구성해야 합니다.

끌어오기 구독을 사용하려면 RMO(복제 관리 개체) 및 Windows 동기화 관리자를 사용하여 동기화하거나 명령줄에서 복제 에이전트를 실행하여 동기화해야 합니다. 자세한 내용은 SQL Server Express에 데이터 복제를 참조하십시오.

SQL Server 에이전트를 사용하여 복제 에이전트 작업을 계속 실행하려면 밀어넣기 구독을 사용하거나 다른 버전의 SQL Server로 업그레이드해야 합니다. SQL Server Express 및 SQL Server Compact 3.5 SP1를 제외한 모든 버전에는 SQL Server 에이전트가 포함되어 있습니다. 밀어넣기 구독을 사용하는 경우 배포 에이전트 또는 병합 에이전트가 배포자에서 실행되므로 SQL Server 에이전트를 사용할 수 있습니다. SQL Server Express는 배포자가 될 수 없습니다.

Microsoft Access(Jet 4.0) 구독자

Jet는 Access에서 사용되는 기본 데이터베이스이며 SQL Server 2000에서는 복제가 Jet 데이터베이스에 대한 구독을 지원했습니다. 이러한 구독은 더 이상 지원되지 않습니다.

대신 SQL Server Express를 사용하는 것이 좋습니다. Access는 SQL Server 데이터베이스를 백 엔드로 사용할 수 있으며 SQL Server 데이터베이스는 이 문제로 인해 영향을 받지 않습니다. 자세한 내용은 SQL Server Express에 데이터 복제를 참조하십시오.

트랜잭션 복제에 대한 주요 변경

다음 주요 변경은 트랜잭션 복제에 적용됩니다.

기능

설명

트랜잭션 구독을 백업에서 초기화1

SQL Server 2008에서는 백업에서 구독을 초기화하려면 사용자가 dbcreator 서버 역할의 멤버여야 합니다. SQL Server 2005에서는 db_owner 데이터베이스 역할의 멤버 자격만 있어도 충분했습니다.

백업에서 구독을 초기화하는 방법은 스냅숏 없이 트랜잭션 구독 초기화를 참조하십시오.

지연 업데이트 구독에 대한 메시지 큐 옵션

지연 업데이트 구독을 사용할 경우 구독자의 변경 내용이 큐에 기록됩니다. 그러면 큐 판독기 에이전트가 큐에서 변경 내용을 읽은 다음 게시자로 배달합니다. SQL Server 2000에서 구독은 SQL Server 큐 또는 메시지 큐에 변경 내용을 저장할 수 있었습니다. 큐 유형이 sp_addpublication의 @queue_type 매개 변수로 지정되었으므로 sql 및 msmq(메시지 큐) 값이 허용되었습니다. 그러나 SQL Server 2005에서는 sql 값만 허용됩니다. 메시지 큐를 사용하는 기존 게시는 업그레이드 중에 SQL Server 큐를 사용하도록 수정됩니다. 메시지 큐를 사용하는 지연 업데이트에 종속된 응용 프로그램인 경우 SQL Server 큐를 허용하도록 다시 작성해야 합니다. 지연 업데이트 구독에 대한 자세한 내용은 트랜잭션 복제를 위한 업데이트 가능 구독을 참조하십시오.

SQL Server가 업그레이드되는 동안 메시지 큐 서비스가 실행 중이면 업그레이드 후에 기존 메시지 큐 구독 큐가 제거됩니다.

중요 정보중요
Windows 2000 및 Windows XP의 경우 메시지 큐를 사용하려면 MSDTC가 필요하기 때문에 MSDTC(Microsoft Distributed Transaction Coordinator) 서비스도 실행 중이어야 합니다.

메시지 큐 서비스가 실행되고 있지 않은 경우에는 업그레이드가 완료된 후에 큐를 수동으로 제거하십시오. 큐 제거 방법은 Windows 설명서를 참조하십시오.

구독 업데이트 호출 형식 변경 내용

기본적으로 트랜잭션 복제에서 일련의 저장 프로시저를 사용하여 변경 내용을 구독자에 적용합니다. 각 프로시저에는 호출 형식이 있습니다. 이 형식은 프로시저에 매개 변수가 전달되는 방식 및 구독자에 전송되는 데이터의 양을 결정합니다. SQL Server 2000에서는 기본 형식이 CALL입니다. SQL Server 2005 및 SQL Server 2008에서는 기본 형식이 VCALL입니다.

이러한 변경 내용은 저장 프로시저가 사용자 지정된 토폴로지에만 영향을 줍니다. 업그레이드 후에는 사용자 지정된 프로시저의 서명을 변경하여 추가 매개 변수를 포함해야 합니다. 이렇게 하지 않으면 배포 에이전트가 실패합니다.

1 이 문제는 SQL Server 2008 이상 버전에만 영향을 줍니다.

병합 복제에 대한 주요 변경

다음 주요 변경은 병합 복제에 적용됩니다.

기능

설명

SQL Server Express에서 게시

SQL Server MSDE는 병합 게시의 게시자 역할을 할 수 있었으나 MSDE 대신 사용되는 SQL Server Express는 게시자 역할을 할 수 없습니다. 이 버전은 병합, 트랜잭션 및 스냅숏 게시를 구독할 수 있습니다. 구독 업데이트가 있는 병합 복제 및 트랜잭션 복제의 경우 변경 내용을 구독자에서 게시자로 다시 전파할 수 있도록 허용합니다. SQL Server Express에 복제하는 방법은 SQL Server Express에 데이터 복제를 참조하십시오.

변경 내용 일괄 처리

이전 버전의 SQL Server에서는 병합 에이전트의 변경 내용이 행 단위로 처리되었습니다. SQL Server 2005에서는 성능을 높이기 위해 변경 내용이 일괄 처리되므로 단일 문에서 둘 이상의 행을 삽입, 업데이트 또는 삭제할 수 있습니다. 게시 또는 구독 데이터베이스의 게시된 테이블에 트리거가 있을 경우 해당 트리거에서 다중 행 삽입, 업데이트 및 삭제를 처리할 수 있습니다. 자세한 내용은 DML 트리거에 대한 다중 행 고려 사항을 참조하십시오.

충돌 테이블 다시 만들기

SQL Server 2005로 업그레이드 시 소유자를 DBO로 하여 충돌 테이블이 다시 생성됩니다. SQL Server 2000에서 다른 사용자가 소유한 테이블이 하나라도 있다면 응용 프로그램을 수정해야 합니다.

병합 복제는 게시의 각 아티클에 대한 충돌 테이블을 conflict_PublicationName_ArticleName 형식의 이름으로 만듭니다. 모든 메타데이터 테이블은 업그레이드 시 다시 생성되고 모든 충돌 테이블은 DBO 스키마에서 생성됩니다.

새로 할당된 ID 범위

자동 ID 범위 관리를 사용하는 테이블에 대해 복제는 업그레이드 동안 새 ID 범위를 할당할 수도 있습니다. 임의의 테이블에 할당된 ID 범위가 게시자보다 구독자에서 더 크다면 복제는 구독자의 범위와 같은 범위를 할당합니다.

각 아티클에 사용되는 범위를 확인하려면 게시 데이터베이스에서 sp_helpmergearticle을 실행하고 pub_identity_range 및 identity_rang 열을 검사합니다.