tablediff 유틸리티tablediff Utility

tablediff 유틸리티는 두 테이블에 포함된 데이터의 불일치 여부를 비교하는 데 사용되며, 복제 토폴로지의 데이터 불일치 문제를 해결하는 데 특히 유용합니다.The tablediff utility is used to compare the data in two tables for non-convergence, and is particularly useful for troubleshooting non-convergence in a replication topology. 명령 프롬프트나 배치 파일에서 이 유틸리티를 사용하여 다음 태스크를 수행할 수 있습니다.This utility can be used from the command prompt or in a batch file to perform the following tasks:

  • 복제 게시자 역할을 하는 MicrosoftMicrosoft SQL ServerSQL Server 인스턴스에 있는 원본 테이블과 복제 구독자 역할을 하는 하나 이상의 SQL ServerSQL Server 인스턴스에 있는 대상 테이블을 행 단위로 비교할 수 있습니다.A row by row comparison between a source table in an instance of MicrosoftMicrosoft SQL ServerSQL Server acting as a replication Publisher and the destination table at one or more instances of SQL ServerSQL Server acting as replication Subscribers.

  • 행 개수와 스키마만 비교하여 비교 작업을 빨리 수행합니다.Perform a fast comparison by only comparing row counts and schema.

  • 열 수준에서 비교할 수 있습니다.Perform column-level comparisons.

  • 대상 서버의 불일치를 해결하는 Transact-SQLTransact-SQL 스크립트를 생성하여 원본 테이블과 대상 테이블을 일치시킬 수 있습니다.Generate a Transact-SQLTransact-SQL script to fix discrepancies at the destination server to bring the source and destination tables into convergence.

  • 결과를 출력 파일이나 대상 데이터베이스의 테이블에 기록할 수 있습니다.Log results to an output file or into a table in the destination database.

구문Syntax


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 ]   
}  

인수Arguments

[ -?[ -? ]]
지원되는 매개 변수 목록을 반환합니다.Returns the list of supported parameters.

-sourceserver source_server_name[\instance_name]-sourceserver source_server_name[\instance_name]
원본 서버의 이름입니다.Is the name of the source server. 의 기본 인스턴스에 대해 source_server_name SQL ServerSQL Server을 지정합니다.Specify source_server_name for the default instance of SQL ServerSQL Server. 의 명명된 인스턴스에 대해\source_server_name instance_name SQL ServerSQL Server을 지정합니다.Specify source_server_name\instance_name for a named instance of SQL ServerSQL Server.

-sourcedatabase source_database-sourcedatabase source_database
원본 데이터베이스의 이름입니다.Is the name of the source database.

-sourcetable source_table_name-sourcetable source_table_name
검사할 원본 테이블의 이름입니다.Is the name of the source table being checked.

-sourceschema source_schema_name-sourceschema source_schema_name
원본 테이블의 스키마 소유자입니다.The schema owner of the source table. 기본적으로 테이블 소유자를 dbo로 간주합니다.By default, the table owner is assumed to be dbo.

-sourcepassword source_password-sourcepassword source_password
SQL ServerSQL Server 인증을 사용하여 원본 서버에 연결하는 데 사용되는 로그인 암호입니다.Is the password for the login used to connect to the source server using SQL ServerSQL Server Authentication.

중요

가능하면 런타임 동안 보안 자격 증명을 지정합니다.When possible, supply security credentials at runtime. 스크립트 파일에 자격 증명을 저장해야 하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-sourceuser source_login-sourceuser source_login
SQL ServerSQL Server 인증을 사용하여 원본 서버에 연결하는 데 사용되는 로그인입니다.Is the login used to connect to the source server using SQL ServerSQL Server Authentication. source_login 을 지정하지 않으면 원본 서버에 연결할 때 Windows 인증이 사용됩니다.If source_login is not supplied, then Windows Authentication is used when connecting to the source server. 가능하면 Windows 인증을 사용하세요.When possible, use Windows Authentication.

-sourcelocked-sourcelocked
비교를 수행하는 동안 TABLOCK 및 HOLDLOCK 테이블 힌트를 사용하여 원본 테이블이 잠깁니다.The source table is locked during the comparison using the TABLOCK and HOLDLOCK table hints.

-destinationserver destination_server_name[\instance_name]-destinationserver destination_server_name[\instance_name]
대상 서버의 이름입니다.Is the name of the destination server. 의 기본 인스턴스에 대해 destination_server_name SQL ServerSQL Server을 지정합니다.Specify destination_server_name for the default instance of SQL ServerSQL Server. 의 명명된 인스턴스에 대해\destination_server_name instance_name SQL ServerSQL Server을 지정합니다.Specify destination_server_name\instance_name for a named instance of SQL ServerSQL Server.

-destinationdatabase subscription_database-destinationdatabase subscription_database
대상 데이터베이스의 이름입니다.Is the name of the destination database.

-destinationtable destination_table-destinationtable destination_table
대상 테이블의 이름입니다.Is the name of the destination table.

-destinationschema destination_schema_name-destinationschema destination_schema_name
대상 테이블의 스키마 소유자입니다.The schema owner of the destination table. 기본적으로 테이블 소유자를 dbo로 간주합니다.By default, the table owner is assumed to be dbo.

-destinationpassword destination_password-destinationpassword destination_password
SQL ServerSQL Server 인증을 사용하여 대상 서버에 연결하는 데 사용되는 로그인 암호입니다.Is the password for the login used to connect to the destination server using SQL ServerSQL Server Authentication.

중요

가능하면 런타임 동안 보안 자격 증명을 지정합니다.When possible, supply security credentials at runtime. 스크립트 파일에 자격 증명을 저장해야 하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.If you must store credentials in a script file, you should secure the file to prevent unauthorized access.

-destinationuser destination_login-destinationuser destination_login
SQL ServerSQL Server 인증을 사용하여 대상 서버에 연결하는 데 사용되는 로그인입니다.Is the login used to connect to the destination server using SQL ServerSQL Server Authentication. destination_login 을 지정하지 않으면 대상 서버에 연결할 때 Windows 인증이 사용됩니다.If destination_login is not supplied, then Windows Authentication is used when connecting to the server. 가능하면 Windows 인증을 사용하세요.When possible, use Windows Authentication.

-destinationlocked-destinationlocked
비교를 수행하는 동안 TABLOCK 및 HOLDLOCK 테이블 힌트를 사용하여 대상 테이블이 잠깁니다.The destination table is locked during the comparison using the TABLOCK and HOLDLOCK table hints.

-b large_object_bytes-b large_object_bytes
큰 개체 데이터 형식 열에 대해 비교할 바이트 수입니다. 이 데이터 형식에는 text, ntext, 이미지, varchar(max), nvarchar(max)varbinary(max)가 포함됩니다.Is the number of bytes to compare for large object data type columns, which includes: text, ntext, image, varchar(max), nvarchar(max) and varbinary(max). large_object_bytes 는 기본적으로 열 크기로 설정됩니다.large_object_bytes defaults to the size of the column. large_object_bytes 에 지정한 바이트 수를 초과하는 데이터는 비교되지 않습니다.Any data above large_object_bytes will not be compared.

-bf number_of_statements-bf number_of_statements
Transact-SQLTransact-SQL -f Transact-SQLTransact-SQL 옵션을 사용할 경우 현재 스크립트 파일에 쓸 문의 수입니다.Is the number of Transact-SQLTransact-SQL statements to write to the current Transact-SQLTransact-SQL script file when the -f option is used. Transact-SQLTransact-SQL 문의 수가 number_of_statements를 초과하면 새 Transact-SQLTransact-SQL 스크립트 파일이 생성됩니다.When the number of Transact-SQLTransact-SQL statements exceeds number_of_statements, a new Transact-SQLTransact-SQL script file is created.

-c-c
열 수준에서 차이점을 비교합니다.Compare column-level differences.

-dt-dt
table_name에 지정된 결과 테이블이 이미 있는 경우 삭제합니다.Drop the result table specified by table_name, if the table already exists.

-et table_name-et table_name
만들 결과 테이블의 이름을 지정합니다.Specifies the name of the result table to create. 이 테이블이 이미 있을 경우 -DT 를 사용해야 합니다. 그렇지 않으면 작업이 실패합니다.If this table already exists, -DT must be used or the operation will fail.

-f [ file_name ]-f [ file_name ]
대상 서버의 테이블을 원본 서버의 테이블과 일치시키는 Transact-SQLTransact-SQL 스크립트를 생성합니다.Generates a Transact-SQLTransact-SQL script to bring the table at the destination server into convergence with the table at the source server. 생성된 Transact-SQLTransact-SQL 스크립트 파일의 이름과 경로를 필요에 따라 지정할 수 있습니다.You can optionally specify a name and path for the generated Transact-SQLTransact-SQL script file. file_name 을 지정하지 않으면 유틸리티가 실행되는 디렉터리에 Transact-SQLTransact-SQL 스크립트 파일이 생성됩니다.If file_name is not specified, the Transact-SQLTransact-SQL script file is generated in the directory where the utility runs.

-o output_file_name-o output_file_name
출력 파일의 전체 이름 및 경로입니다.Is the full name and path of the output file.

-q-q
행 개수와 스키마만 비교하여 비교 작업을 빨리 수행합니다.Perform a fast comparison by only comparing row counts and schema.

-rc number_of_retries-rc number_of_retries
유틸리티가 실패한 작업을 다시 시도하는 횟수입니다.Number of times that the utility retries a failed operation.

-ri retry_interval-ri retry_interval
다시 시도 작업 사이의 대기 간격(초)입니다.Interval, in seconds, to wait between retries.

-strict-strict
원본 스키마와 대상 스키마를 엄격하게 비교합니다.Source and destination schema are strictly compared.

-t connection_timeouts-t connection_timeouts
원본 서버 및 대상 서버에 대한 연결 제한 시간(초)을 설정합니다.Sets the connection timeout period, in seconds, for connections to the source server and destination server.

반환 값Return Value

Value 설명Description
00 성공Success
11 오류Critical error
22 테이블 차이Table differences

주의Remarks

이외 서버에서는 tablediff SQL ServerSQL Server 유틸리티를 사용할 수 없습니다.The tablediff utility cannot be used with non- SQL ServerSQL Server servers.

데이터 형식이 sql_variant 인 열이 있는 테이블은 지원되지 않습니다.Tables with sql_variant data type columns are not supported.

기본적으로 tablediff 유틸리티는 원본 열과 대상 열 간에 다음 데이터 형식 매핑을 지원합니다.By default, the tablediff utility supports the following data type mappings between source and destination columns.

원본 데이터 형식Source data type 대상 데이터 형식Destination data type
tinyinttinyint smallint, int또는 bigintsmallint, int, or bigint
smallintsmallint int 또는 bigintint or bigint
intint bigintbigint
timestamptimestamp varbinaryvarbinary
varchar(max)varchar(max) texttext
nvarchar(max)nvarchar(max) ntextntext
varbinary(max)varbinary(max) 이미지image
texttext varchar(max)varchar(max)
ntextntext nvarchar(max)nvarchar(max)
이미지image varbinary(max)varbinary(max)

-strict 옵션을 사용하여 이러한 매핑을 허용하지 않고 유효성 검사를 엄격하게 수행할 수 있습니다.Use the -strict option to disallow these mappings and perform a strict validation.

비교할 원본 테이블에는 하나 이상의 기본 키, ID 또는 ROWGUID 열이 있어야 합니다.The source table in the comparison must contain at least one primary key, identity, or ROWGUID column. -strict 옵션을 사용하는 경우에는 대상 테이블에도 기본 키, ID 또는 ROWGUID 열이 있어야 합니다.When you use the -strict option, the destination table must also have a primary key, identity, or ROWGUID column.

대상 테이블을 일치시키기 위해 생성된 Transact-SQLTransact-SQL 스크립트에는 다음 데이터 형식이 포함되지 않습니다.The Transact-SQLTransact-SQL script generated to bring the destination table into convergence does not include the following data types:

  • varchar(max)varchar(max)

  • nvarchar(max)nvarchar(max)

  • varbinary(max)varbinary(max)

  • timestamptimestamp

  • xmlxml

  • texttext

  • ntextntext

  • 이미지image

사용 권한Permissions

테이블을 비교하려면 비교할 테이블 개체에 대한 SELECT ALL 권한이 있어야 합니다.To compare tables, you need SELECT ALL permissions on the table objects being compared.

-et 옵션을 사용하려면 db_owner 고정 데이터베이스 역할의 멤버이거나 적어도 구독 데이터베이스에 대한 CREATE TABLE 권한과 대상 서버의 대상 소유자 스키마에 대한 ALTER 권한이 있어야 합니다.To use the -et option, you must be a member of the db_owner fixed database role, or at least have CREATE TABLE permission in the subscription database and ALTER permission on the destination owner schema at the destination server.

-dt 옵션을 사용하려면 db_owner 고정 데이터베이스 역할의 멤버이거나 적어도 대상 서버의 대상 소유자 스키마에 대한 ALTER 권한이 있어야 합니다.To use the -dt option, you must be a member of the db_owner fixed database role, or at least have ALTER permission on the destination owner schema at the destination server.

-o 또는 -f 옵션을 사용하려면 지정된 파일 디렉터리 위치에 대한 쓰기 권한이 있어야 합니다.To use the -o or -f options, you must have write permissions to the specified file directory location.

참고 항목See Also

복제된 테이블의 차이점 비교(복제 프로그래밍)Compare Replicated Tables for Differences (Replication Programming)