복제된 데이터의 유효성 검사Validate Replicated Data

트랜잭션 및 병합 복제를 사용하면 구독자의 데이터가 게시자의 데이터와 일치하는지 확인할 수 있습니다.Transactional and merge replication allow you to validate that data at the Subscriber matches data at the Publisher. 게시에 대한 특정 구독 또는 모든 구독에 대해 유효성 검사를 수행할 수 있습니다.Validation can be performed for specific subscriptions or for all subscriptions to a publication. 다음 유효성 검사 유형 중 하나를 지정합니다. 배포 에이전트 또는 병합 에이전트가 다음에 실행될 때 해당 유형에 따라 데이터의 유효성을 검사합니다.Specify one of the following validation types and the Distribution Agent or Merge Agent will validate data the next time it runs:

  • 행 개수만.Row count only. 이 유형은 구독자에 있는 테이블의 행 개수가 게시자에 있는 테이블의 행 개수와 동일한지 여부의 유효성만 검사하고 행 내용 일치 여부의 유효성은 검사하지 않습니다.This validates whether the table at the Subscriber has the same number of rows as the table at the Publisher, but does not validate that the content of the rows matches. 행 개수 유효성 검사에서는 최소 수준의 데이터 문제 인식을 위한 검사만 수행됩니다.Row count validation provides a lightweight approach to validation that can make you aware of issues with your data.

  • 행 개수와 이진 체크섬.Row count and binary checksum. 게시자 및 구독자에서 행 개수의 유효성을 검사할 뿐만 아니라 체크섬 알고리즘을 사용하여 모든 데이터의 체크섬을 계산합니다.In addition to taking a count of rows at the Publisher and Subscriber, a checksum of all the data is calculated using the checksum algorithm. 행 개수 확인을 실패하면 체크섬 계산이 수행되지 않습니다.If the row count fails, the checksum is not performed.

    구독자의 데이터와 게시자의 데이터가 일치하는지에 대한 유효성 검사 외에도 병합 복제는 각 구독자에 대해 데이터가 올바르게 분할되었는지에 대한 유효성을 검사하는 기능을 제공합니다.In addition to validating that data at the Subscriber and Publisher match, merge replication provides the ability to validate that data is partitioned correctly for each Subscriber. 자세한 내용은 병합 구독자의 파티션 정보 유효성 검사를 참조하세요.For more information, see Validate Partition Information for a Merge Subscriber.

    데이터의 유효성을 검사하려면To validate data

    구독에 있는 모든 아티클의 유효성을 검사하려면 SQL Server Management StudioSQL Server Management Studio, 저장 프로시저 또는 RMO(복제 관리 개체)를 사용합니다.To validate all articles in a subscription, use SQL Server Management StudioSQL Server Management Studio, stored procedures or Replication Management Objects (RMO). 자세한 내용은 Validate Data at the Subscriber를 참조하세요.For more information, see Validate Data at the Subscriber. 스냅숏 게시와 트랜잭션 게시에 있는 개별 아티클의 유효성을 검사하려면 저장 프로시저를 사용해야 합니다.To validate individual articles in snapshot and transactional publications, you must use stored procedures.

데이터 유효성 검사 결과Data Validation Results

유효성 검사가 완료되면 배포 에이전트 또는 병합 에이전트는 성공 여부에 대한 메시지를 기록합니다. 복제는 유효성이 확인되지 못한 행은 보고하지 않습니다.When validation is complete, the Distribution Agent or Merge Agent logs messages regarding success or failure (replication does not report which rows failed). 이러한 메시지는 SQL Server Management StudioSQL Server Management Studio, 복제 모니터 및 복제 시스템 테이블에서 볼 수 있습니다.These messages can be viewed in SQL Server Management StudioSQL Server Management Studio, Replication Monitor, and replication system tables. 위에 나열된 방법 항목에서 유효성 검사를 실행하고 결과를 확인하는 방법을 설명합니다.The how-to topic listed above demonstrates how to run validation and view the results.

유효성 검사 실패를 처리하려면 다음 사항을 살펴보십시오.To handle validation failures, consider the following:

데이터 유효성 검사에 대한 고려 사항Considerations for Data Validation

데이터 유효성을 검사할 때 다음 사항을 고려하십시오.Take the following issues into consideration when validating data:

  • 데이터 유효성을 검사하기 전에 구독자에서 모든 업데이트 작업을 중지해야 합니다. 유효성 검사가 수행 중일 때는 게시자에서 작업을 중지할 필요가 없습니다.You must stop all update activity at Subscribers before validating data (it is not necessary to stop activity at the Publisher when validation is occurring).

  • 큰 데이터 집합의 유효성을 검사할 때는 체크섬 및 이진 체크섬이 프로세서 리소스를 많이 요구할 수 있으므로 복제에 사용되는 서버에서 진행 중인 작업 수가 가장 적은 경우 유효성 검사가 수행되도록 예약해야 합니다.Because checksums and binary checksums can require large amounts of processor resources when validating a large data set, you should schedule validation to occur when there is the least activity on the servers used in replication.

  • 복제는 테이블의 유효성만 검사하고 게시자의 스키마 전용 아티클(예: 저장 프로시저)이 구독자의 스키마 전용 아티클과 동일한지 여부의 유효성은 검사하지 않습니다.Replication validates tables only; it does not validate whether schema only articles (such as stored procedures) are the same at the Publisher and Subscriber.

  • 게시된 테이블에는 이진 체크섬을 사용할 수 있습니다.Binary checksum can be used with any published table. 체크섬은 열 필터가 있는 테이블 또는 열을 삭제 또는 추가하는 ALTER TABLE 문으로 인해 열 오프셋이 다른 논리적 테이블 구조의 유효성을 검사할 수 없습니다.Checksum cannot validate tables with column filters, or logical table structures where column offsets differ (due to ALTER TABLE statements that drop or add columns).

  • 복제 유효성 검사에서는 checksumbinary_checksum 함수를 사용합니다.Replication validation uses the checksum and binary_checksum functions. 해당 동작에 대한 자세한 내용은 CHECKSUM(Transact-SQL)BINARY_CHECKSUM(Transact-SQL)을 참조하세요.For information about their behavior, see CHECKSUM (Transact-SQL) and BINARY_CHECKSUM (Transact-SQL).

  • 구독자에서의 데이터 형식과 게시자에서의 데이터 형식이 다른 경우 이진 체크섬 또는 체크섬 유효성 검사가 올바르지 않을 수 있습니다.Validation by using binary checksum or checksum can incorrectly report a failure if data types are different at the Subscriber than they are at the Publisher. 이 문제는 다음 중 하나를 수행할 경우 발생할 수 있습니다.This can occur if you do any one of the following:

    • 이전 버전의 SQL ServerSQL Server에 대한 데이터 형식을 매핑하도록 스키마 옵션을 명시적으로 설정한 경우.Explicitly set schema options to map data types for earlier versions of SQL ServerSQL Server.

    • 병합 게시의 게시 호환성 수준을 이전 버전의 SQL ServerSQL Server로 설정했으며 게시된 테이블에 이 버전에 대해 매핑해야 하는 데이터 형식이 하나 이상 들어 있는 경우.Set the publication compatibility level for a merge publication to an earlier version of SQL ServerSQL Server, and published tables contain one or more data types that must be mapped for this version.

    • 구독을 수동으로 초기화하고 구독자에서 다른 데이터 형식을 사용하는 경우Manually initialize a subscription and are using different data types at the Subscriber.

  • 트랜잭션 복제의 변환 가능한 구독에서는 이진 체크섬 및 체크섬 유효성 검사가 지원되지 않습니다.Binary checksum and checksum validations are not supported for transformable subscriptions for transactional replication.

  • SQL ServerSQL Server 이외 구독자로 복제된 데이터에 대해서는 유효성 검사가 지원되지 않습니다.Validation is not supported for data replicated to non- SQL ServerSQL Server Subscribers.

데이터 유효성 검사 작업 방식How Data Validation Works

SQL ServerSQL Server 는 게시자에서 행 개수 또는 체크섬을 계산한 다음 그 값을 구독자에서 계산된 행 개수 또는 체크섬과 비교하여 데이터의 유효성을 검사합니다. validates data by calculating a row count or a checksum at the Publisher and then comparing those values to the row count or checksum calculated at the Subscriber. 전체 게시 테이블과 전체 구독 테이블에 대해 각각 하나의 값이 계산되지만 text, ntext또는 image 열의 데이터는 계산에 포함되지 않습니다.One value is calculated for the entire publication table and one value is calculated for the entire subscription table, but data in text, ntext, or image columns is not included in the calculations.

계산이 수행되는 동안 행 개수 또는 체크섬이 실행될 테이블에 공유 잠금이 임시로 지정되지만 대부분 몇 초 내에 계산이 신속히 완료되고 공유 잠금이 제거됩니다.While the calculations are performed, shared locks are placed temporarily on tables for which row counts or checksums are being run, but the calculations are completed quickly and the shared locks removed, usually in a matter of seconds.

이진 체크섬을 사용할 때는 데이터 페이지의 실제 행에 대한 CRC 대신 열 단위의 32비트 중복 검사(CRC)가 수행됩니다.When binary checksums are used, 32-bit redundancy check (CRC) occurs on a column-by-column basis rather than a CRC on the physical row on the data page. 따라서 테이블의 열이 데이터 페이지에서 실제로 임의의 순서로 배열될 수 있지만, 해당 행에 대해 동일한 CRC로 계산됩니다.This allows the columns with the table to be in any order physically on the data page, but still compute to the same CRC for the row. 이진 체크섬 유효성 검사는 게시에 행 또는 열 필터가 있을 때 사용할 수 있습니다.Binary checksum validation can be used when there are row or column filters on the publication.

참고 항목See Also

Best Practices for Replication AdministrationBest Practices for Replication Administration