sp_table_validation(Transact-SQL)
테이블 또는 인덱싱된 뷰에 관한 행 개수 또는 체크섬 정보를 반환하거나 제공된 행 개수 또는 체크섬 정보를 지정된 테이블 또는 인덱싱된 뷰와 비교합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자와 구독 데이터베이스의 구독자에서 실행됩니다. Oracle 게시자에 대해서는 지원되지 않습니다.
구문
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'
테이블의 이름입니다. table은 sysname이며 기본값은 없습니다.[ @expected_rowcount=] expected_rowcountOUTPUT
테이블에서 예상된 수의 행을 반환할 것인지 지정합니다. expected_rowcount는 int이며 기본값은 NULL입니다. NULL인 경우, 실제 행 개수가 출력 매개 변수로 반환됩니다. 값을 제공한 경우에는 해당 값을 실제 행 개수와 비교하여 차이를 확인합니다.[ @expected_checksum=] expected_checksumOUTPUT
테이블에 대해 예상된 체크섬을 반환할 것인지 지정합니다. expected_checksum은 numeric이며 기본값은 NULL입니다. NULL인 경우, 실제 체크섬이 출력 매개 변수로 반환됩니다. 값을 제공한 경우에는 해당 값을 실제 체크섬과 비교하여 차이를 확인합니다.[ @rowcount_only=] type_of_check_requested
어떤 유형의 체크섬 또는 행 개수 작업을 수행할 것인지 지정합니다. type_of_check_requested는 smallint이며 기본값은 1입니다.0인 경우에는 행 개수 및 MicrosoftSQL Server 7.0 호환 체크섬을 수행합니다.
1인 경우에는 행 개수만 확인합니다.
2인 경우에는 행 개수 및 이진 체크섬을 수행합니다.
[ @owner=] 'owner'
테이블 소유자의 이름입니다. owner는 sysname이며 기본값은 NULL입니다.[ @full_or_fast=] full_or_fast
행 개수를 계산하는 데 사용하는 방법입니다. full_or_fast는 tinyint이며 기본값은 2입니다. 다음 값 중 하나일 수 있습니다.값
설명
0
COUNT(*)를 사용하여 전체 개수를 계산합니다.
1
sysindexes.rows에서 빠른 계산을 수행합니다. sysindexes에서의 행 계산은 실제 테이블에서의 행 계산보다 훨씬 빠릅니다. 그러나 sysindexes는 느리게 업데이트되므로 행 개수가 정확하지 않을 수 있습니다.
2(기본값)
먼저 빠른 방법을 시도함으로써 조건부로 빠른 계산 방법을 수행합니다. 빠른 방법의 결과에 차이점이 있는 경우 전체 방법으로 전환합니다. expected_rowcount가 NULL이고 값을 가져오는 데 저장 프로시저를 사용한 경우에는 항상 전체 COUNT(*)가 사용됩니다.
[ @shutdown_agent=] shutdown_agent
배포 에이전트가 sp_table_validation을 실행하는 경우, 유효성 검사가 종료되면 배포 에이전트가 즉시 종료되어야 하는지를 지정합니다. shutdown_agent는 bit이며 기본값은 0입니다. 0인 경우 복제 에이전트가 종료되지 않습니다. 1인 경우에는 20578 오류가 발생하며 복제 에이전트를 종료하도록 신호가 발생됩니다. 사용자가 직접 sp_table_validation을 실행한 경우 이 매개 변수는 무시됩니다.[ @table_name =] table_name
출력 메시지에 사용되는 뷰의 테이블 이름입니다. table_name은 sysname이며 기본값은 @table입니다.[ @column_list= ] 'column_list'
checksum 함수에서 사용해야 하는 열의 목록입니다. column_list는 **nvarchar(4000)**이며 기본값은 NULL입니다. 계산 열 및 타임스탬프 열을 제외한 열 목록을 지정하려면 병합 아티클의 유효성 검사를 사용할 수 있도록 설정하십시오.
반환 코드 값
체크섬 유효성 검사를 수행하여 예상 체크섬과 테이블의 체크섬이 일치하는 경우, sp_table_validation에서 테이블이 체크섬 유효성 검사를 통과했다는 메시지를 반환합니다. 그렇지 않은 경우에는 테이블이 동기화되지 않았다는 메시지를 반환하며 예상 행 개수 및 실제 행 개수의 차이를 보고합니다.
행 개수 유효성 검사를 수행하여 예상 행 개수와 테이블의 행 개수가 일치하는 경우, sp_table_validation에서 테이블이 행 개수 유효성 검사를 통과했다는 메시지를 반환합니다. 그렇지 않은 경우에는 테이블이 동기화되지 않았다는 메시지를 반환하며 예상 행 개수 및 실제 행 개수의 차이를 보고합니다.
주의
sp_table_validation은 모든 유형의 복제에서 사용되지만 Oracle 게시자에 대해서는 지원되지 않습니다.
체크섬은 페이지의 전체 행 이미지에 대한 32 비트 순환 중복 검사(CRC)를 계산합니다. 체크섬은 열을 선택적으로 검사하지 않으며 테이블의 뷰 또는 열 일부에 대해서는 계산할 수 없습니다. 또한 체크섬은 본래 디자인에 따라 text 및 image 열의 내용을 건너뜁니다.
체크섬을 계산할 때는 두 서버의 테이블 구조가 동일해야 합니다. 즉, 테이블에 같은 열이 같은 순서로 있어야 하며 데이터 형식, 길이가 같아야 하고 NULL 허용 여부가 같아야 합니다. 예를 들어 게시자가 CREATE TABLE 작업을 수행한 다음 열을 추가하기 위해 ALTER TABLE 작업을 수행하였으나 구독자에 적용되는 스크립트가 단순한 CREATE 테이블인 경우에는 구조가 일치하지 않습니다. 두 테이블의 구조가 동일한지 확실하지 않은 경우에는 syscolumns를 보고 각 테이블의 오프셋이 동일한지 확인하십시오.
부동 소수점 값은 문자 모드 bcp를 사용하는 경우, 즉 게시가 SQL Server 이외 구독자인 경우 서로 다른 체크섬을 만들기 쉽습니다. 그 이유는 문자 모드에서, 또는 문자 모드로 변환을 수행할 때 사소하지만 피할 수 없는 전체 자릿수의 차이가 있기 때문입니다.
사용 권한
sp_table_validation을 실행하려면 유효성을 검사 중인 테이블에 대해 SELECT 권한이 필요합니다.