다음을 통해 공유


sp_table_validation(Transact-SQL)

적용 대상: SQL Server

테이블 또는 인덱싱된 뷰에서 행 개수 또는 체크섬 정보를 반환하거나 제공된 행 개수 또는 체크섬 정보를 지정된 테이블 또는 인덱싱된 뷰와 비교합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자와 구독 데이터베이스의 구독자에서 실행됩니다.

참고 항목

sp_table_validation 는 Oracle 게시자에 대해 지원되지 않습니다.

Transact-SQL 구문 표기 규칙

구문

sp_table_validation [ @table = ] 'table'
    [ , [ @expected_rowcount = ] type_of_check_requested OUTPUT ]
    [ , [ @expected_checksum = ] expected_checksum OUTPUT ]
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @owner = ] 'owner' ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @column_list = ] 'column_list' ]
[ ; ]

인수

[ @table = ] 'table'

테이블의 이름입니다. 테이블은 sysname이며 기본값은 없습니다.

[ @expected_rowcount = ] expected_rowcount OUTPUT

테이블의 예상 행 수를 반환할지 여부를 지정합니다. @expected_rowcount 기본값NULLint입니다. 이 경우 NULL실제 행 수는 출력 매개 변수로 반환됩니다. 값을 제공한 경우에는 해당 값을 실제 행 개수와 비교하여 차이를 확인합니다.

[ @expected_checksum = ] expected_checksum OUTPUT

테이블에 대해 예상된 체크섬을 반환할 것인지 지정합니다. @expected_checksum 숫자이며 기본값은 .입니다NULL. 이 경우 NULL실제 체크섬이 출력 매개 변수로 반환됩니다. 값을 제공한 경우에는 해당 값을 실제 체크섬과 비교하여 차이를 확인합니다.

[ @rowcount_only = ] type_of_check_requested

수행할 체크섬 또는 행 개수 유형을 지정합니다. @rowcount_only 기본값1인 smallint입니다.

이 경우 0행 개수 및 SQL Server 7.0 호환 체크섬을 수행합니다.

이면 1행 수 확인만 수행합니다.

이 경우 2행 수 및 이진 체크섬을 수행합니다.

[ @owner = ] 'owner'

테이블 소유자의 이름입니다. @owner sysname이며 기본값은 .입니다NULL.

[ @full_or_fast = ] full_or_fast

행 개수를 계산하는 데 사용되는 메서드입니다. @full_or_fast 기본값2인 tinyint이며 이러한 값 중 하나일 수 있습니다.

설명
0 COUNT(*)를 사용하여 전체 개수를 계산합니다.
1 에서 sysindexes.rows빠른 개수를 수행합니다. 행 수를 계산하는 sysindexes 것은 실제 테이블의 행을 계산하는 것보다 훨씬 빠릅니다. 그러나 sysindexes 지연 업데이트되므로 행 수는 정확하지 않을 수 있습니다.
2(기본값) 먼저 빠른 방법을 시도함으로써 조건부로 빠른 계산 방법을 수행합니다. 빠른 메서드에 차이점이 표시되면 전체 메서드로 되돌려 줍니다. expected_rowcount NULL 저장 프로시저를 사용하여 값을 가져오는 경우 항상 전체 COUNT(*) 가 사용됩니다.

[ @shutdown_agent = ] shutdown_agent

배포 에이전트 실행 중인 sp_table_validation경우 유효성 검사가 완료될 때 배포 에이전트 즉시 종료해야 하는지 여부를 지정합니다. @shutdown_agent 비트이며 기본값은 .입니다0. 이 경우 0복제 에이전트가 종료되지 않습니다. 이 경우 1오류 20578이 발생하고 복제 에이전트가 종료하라는 신호를 수신합니다. 이 매개 변수는 사용자가 직접 실행할 때 sp_table_validation 무시됩니다.

[ @table_name = ] ‘table_name

출력 메시지에 사용되는 뷰의 테이블 이름입니다. table_name sysname이며 기본값은 @table.

[ @column_list = ] 'column_list'

체크섬 함수에 사용해야 하는 열 목록입니다. column_list 기본값NULL인 nvarchar(4000)입니다. 병합 아티클의 유효성을 검사하여 계산 열과 타임스탬프 열을 제외하는 열 목록을 지정할 수 있습니다.

반환 코드 값

체크섬 유효성 검사를 수행하고 예상 체크섬이 테이블의 체크섬과 같으면 테이블 sp_table_validation 이 체크섬 유효성 검사를 통과했다는 메시지를 반환합니다. 그렇지 않으면 테이블이 동기화되지 않을 수 있다는 메시지를 반환하고 예상 행 수와 실제 행 수 간의 차이를 보고합니다.

행 개수 유효성 검사를 수행하고 예상 행 수가 테이블의 숫자와 같으면 테이블 sp_table_validation 이 행 개수 유효성 검사를 통과했다는 메시지를 반환합니다. 그렇지 않으면 테이블이 동기화되지 않을 수 있다는 메시지를 반환하고 예상 행 수와 실제 행 수 간의 차이를 보고합니다.

설명

sp_table_validation 는 모든 유형의 복제에서 사용됩니다. sp_table_validation 는 Oracle 게시자에 대해 지원되지 않습니다.

체크섬은 페이지의 전체 행 이미지에 대한 32 비트 순환 중복 검사(CRC)를 계산합니다. 열을 선택적으로 확인하지 않으며 테이블의 뷰 또는 세로 파티션에서 작동할 수 없습니다. 또한 체크섬은 텍스트이미지 열의 내용을 건너뜁니다(의도적으로).

체크섬을 수행할 때 테이블의 구조는 두 서버 간에 동일해야 합니다. 즉, 테이블에 동일한 순서의 동일한 열, 동일한 데이터 형식 및 길이 및 동일한 NULL/NOT NULL 조건이 있어야 합니다. 예를 들어 게시자가 CREATE TABLEALTER TABLE 열을 추가했지만 구독자에 적용된 스크립트가 단순 CREATE 테이블인 경우 구조는 동일하지 않습니다. 두 테이블의 구조가 동일하지 않은 경우 sys.syscolumns를 살펴보고 각 테이블의 오프셋이 동일한지 확인합니다 .

부동 소수점 값은 문자 모드 bcp 를 사용한 경우 체크섬 차이를 생성할 수 있습니다. 즉, 게시에 SQL Server가 아닌 구독자가 있는 경우입니다. 문자 모드로 변환할 때 정밀도가 사소하고 피할 수 없는 차이로 인해 발생합니다.

사용 권한

실행 sp_table_validation하려면 유효성을 검사할 테이블에 대한 SELECT 권한이 있어야 합니다.