tablediff 유틸리티
적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)
tablediff 유틸리티는 비수렴성을 위해 두 테이블의 데이터를 비교하는 데 사용되며 복제 토폴로지에서 비대화 문제를 해결하는 데 유용합니다. 명령 프롬프트나 배치 파일에서 이 유틸리티를 사용하여 다음 태스크를 수행할 수 있습니다.
복제 게시자 역할을 하는 SQL Server instance 원본 테이블과 복제 구독자 역할을 하는 하나 이상의 SQL Server 인스턴스에 있는 대상 테이블 간의 행별 비교입니다.
행 개수와 스키마만 비교하여 비교 작업을 빨리 수행합니다.
열 수준에서 비교할 수 있습니다.
대상 서버의 불일치를 해결하는 Transact-SQL 스크립트를 생성하여 원본 테이블과 대상 테이블을 일치시킬 수 있습니다.
결과를 출력 파일이나 대상 데이터베이스의 테이블에 기록할 수 있습니다.
참고
tablediff 유틸리티는 SQL Server 복제 도구의 일부입니다. SQL Server 2022(16.x) tablediff.exe
에서는 복제 기능이 설치되면 의 C:\Program Files\Microsoft SQL Server\160\COM
기본 위치에서 찾을 수 있습니다.
구문
tablediff
[ -? ] |
{
-sourceserver source_server_name [ \instance_name ]
-sourcedatabase source_database
-sourcetable source_table_name
[ -sourceschema source_schema_name ]
[ -sourcepassword source_password ]
[ -sourceuser source_login ]
[ -sourcelocked ]
-destinationserver destination_server_name [ \instance_name ]
-destinationdatabase subscription_database
-destinationtable destination_table
[ -destinationschema destination_schema_name ]
[ -destinationpassword destination_password ]
[ -destinationuser destination_login ]
[ -destinationlocked ]
[ -b large_object_bytes ]
[ -bf number_of_statements ]
[ -c ]
[ -dt ]
[ -et table_name ]
[ -f [ file_name ] ]
[ -o output_file_name ]
[ -q ]
[ -rc number_of_retries ]
[ -ri retry_interval ]
[ -strict ]
[ -t connection_timeouts ]
}
인수
[ -? ]
지원되는 매개 변수 목록을 반환합니다.
-sourceserver source_server_name[ \instance_name ]
원본 서버의 이름을 지정합니다. 의 기본 인스턴스에 대해 source_server_name SQL Server을 지정합니다. 의 명명된 인스턴스에 대해\source_server_name instance_name SQL Server을 지정합니다.
-sourcedatabase source_database
원본 데이터베이스의 이름을 지정합니다.
-sourcetable source_table_name
검사할 원본 테이블의 이름을 지정합니다.
-sourceschema source_schema_name
원본 테이블의 스키마 소유자입니다. 기본적으로 테이블 소유자를 dbo로 간주합니다.
-sourcepassword source_password
SQL Server 인증을 사용하여 원본 서버에 연결하는 데 사용되는 로그인의 암호를 지정합니다.
중요
가능하면 런타임 동안 보안 자격 증명을 지정합니다. 스크립트 파일에 자격 증명을 저장해야 하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.
-sourceuser source_login
SQL Server 인증을 사용하여 원본 서버에 연결하는 데 사용되는 로그인을 지정합니다. source_login 제공되지 않으면 원본 서버에 연결할 때 Windows 인증이 사용됩니다. 가능하면 Windows 인증을 사용하세요.
-sourcelocked
비교를 수행하는 동안 TABLOCK 및 HOLDLOCK 테이블 힌트를 사용하여 원본 테이블이 잠깁니다.
-destinationserver destination_server_name[\instance_name]
대상 서버의 이름을 지정합니다. 의 기본 인스턴스에 대해 destination_server_name SQL Server을 지정합니다. 의 명명된 인스턴스에 대해\destination_server_name instance_name SQL Server을 지정합니다.
-destinationdatabase subscription_database
대상 데이터베이스의 이름을 지정합니다.
-destinationtable destination_table
대상 테이블의 이름을 지정합니다.
-destinationschema destination_schema_name
대상 테이블의 스키마 소유자입니다. 기본적으로 테이블 소유자를 dbo로 간주합니다.
-destinationpassword destination_password
SQL Server 인증을 사용하여 대상 서버에 연결하는 데 사용되는 로그인의 암호를 지정합니다.
중요
가능하면 런타임 동안 보안 자격 증명을 지정합니다. 스크립트 파일에 자격 증명을 저장해야 하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.
-destinationuser destination_login
SQL Server 인증을 사용하여 대상 서버에 연결하는 데 사용되는 로그인을 지정합니다. destination_login 제공되지 않으면 서버에 연결할 때 Windows 인증이 사용됩니다. 가능하면 Windows 인증을 사용하세요.
-destinationlocked
비교를 수행하는 동안 TABLOCK 및 HOLDLOCK 테이블 힌트를 사용하여 대상 테이블이 잠깁니다.
-b large_object_bytes
text, ntext, image, varchar(max), nvarchar(max) 및 varbinary(max)를 포함하는 큰 개체 데이터 형식 열에 대해 비교할 바이트 수를 지정합니다. large_object_bytes 는 기본적으로 열 크기로 설정됩니다. large_object_bytes보다 큰 데이터는 비교되지 않습니다.
-bf number_of_statements
옵션을 사용할 때 -f
현재 Transact-SQL 스크립트 파일에 쓸 Transact-SQL 문의 수를 지정합니다. Transact-SQL 문의 수가 number_of_statements를 초과하면 새 Transact-SQL 스크립트 파일이 생성됩니다.
-c
열 수준에서 차이점을 비교합니다.
-dt
table_name에 지정된 결과 테이블이 이미 있는 경우 삭제합니다.
-et table_name
만들 결과 테이블의 이름을 지정합니다. 이 테이블이 이미 있는 경우 를 -DT
사용해야 합니다. 그렇지 않으면 작업이 실패합니다.
-f [ file_name ]
대상 서버의 테이블을 원본 서버의 테이블과 일치시키는 Transact-SQL 스크립트를 생성합니다. 생성된 Transact-SQL 스크립트 파일의 이름과 경로를 필요에 따라 지정할 수 있습니다. file_name 지정하지 않으면 Transact-SQL 스크립트 파일이 유틸리티가 실행되는 디렉터리에 생성됩니다.
-o output_file_name
출력 파일의 전체 이름과 경로를 지정합니다.
-Q
행 개수와 스키마만 비교하여 비교 작업을 빨리 수행합니다.
-rc number_of_retries
유틸리티가 실패한 작업을 다시 시도하는 횟수입니다.
-ri retry_interval
다시 시도 작업 사이의 대기 간격(초)입니다.
-strict
원본 스키마와 대상 스키마를 엄격하게 비교합니다.
-t connection_timeouts
원본 서버 및 대상 서버에 대한 연결 제한 시간(초)을 설정합니다.
반환 값
값 | Description |
---|---|
0 |
Success |
1 |
오류 |
2 |
테이블 차이 |
설명
tablediff 유틸리티는 SQL Server 아닌 서버에서 사용할 수 없습니다.
sql_variant 데이터 형식 열이 있는 테이블은 지원되지 않습니다.
기본적으로 tablediff 유틸리티는 원본 열과 대상 열 간에 다음 데이터 형식 매핑을 지원합니다.
원본 데이터 형식 | 대상 데이터 형식 |
---|---|
tinyint | smallint, int또는 bigint |
smallint | int 또는 bigint |
int | bigint |
timestamp | varbinary |
varchar(max) | text |
nvarchar(max) | ntext |
varbinary(max) | image |
text | varchar(max) |
ntext | nvarchar(max) |
image | varbinary(max) |
옵션을 -strict
사용하여 이러한 매핑을 허용하지 않으며 엄격한 유효성 검사를 수행합니다.
비교할 원본 테이블에는 하나 이상의 기본 키, ID 또는 ROWGUID 열이 있어야 합니다. 옵션을 사용하는 -strict
경우 대상 테이블에 기본 키, ID 또는 ROWGUID 열도 있어야 합니다.
대상 테이블을 수렴으로 가져오기 위해 생성된 Transact-SQL 스크립트에는 다음 데이터 형식이 포함되지 않습니다.
- varchar(max)
- nvarchar(max)
- varbinary(max)
- timestamp
- xml
- text
- ntext
- image
사용 권한
테이블을 비교하려면 비교할 테이블 개체에 대한 SELECT ALL 권한이 있어야 합니다.
이 -et
옵션을 사용하려면 db_owner 고정 데이터베이스 역할의 멤버이거나 구독 데이터베이스에서 CREATE TABLE 권한과 대상 서버의 대상 소유자 스키마에 대한 ALTER 권한이 있어야 합니다.
옵션을 -dt
사용하려면 db_owner 고정 데이터베이스 역할의 멤버이거나 대상 서버의 대상 소유자 스키마에 대한 ALTER 권한이 있어야 합니다.
또는 -f
옵션을 사용 -o
하려면 지정된 파일 디렉터리 위치에 대한 쓰기 권한이 있어야 합니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기