tablediff, программа

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics даПараллельное хранилище данных

Служебная программа tablediff используется для сравнения данных в двух таблицах на расхождение и особенно полезна для устранения несоответствия данных в топологии репликации. Эта программа может запускаться из командной строки или из пакетного файла и служит для выполнения следующих задач:

  • Построчное сравнение исходной таблицы в экземпляре Microsoft SQL Server, выступающем в качестве издателя репликации, и целевой таблицы в одном или нескольких экземплярах SQL Server, выступающих в качестве подписчиков репликации.

  • Быстрое сравнение, сравнивающее только схемы и количество строк.

  • Сравнение на уровне столбцов.

  • Формирование скрипта Transact-SQL для исправления несоответствий на целевом сервере и обеспечения конвергенции исходной и целевой таблиц.

  • Запись результатов операции в файл вывода или в таблицу целевой базы данных.

Синтаксис

  
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]
Имя исходного сервера. Укажите имя_исходного_сервера для экземпляра SQL Serverпо умолчанию. Укажите имя_исходного_сервера \ имя_экземпляра для именованного экземпляра SQL Server.

-sourcedatabase source_database
Имя базы данных-источника.

-sourcetable source_table_name
Имя проверяемой исходной таблицы.

-sourceschema source_schema_name
Владелец схемы исходной таблицы. Владельцем таблицы по умолчанию считается dbo.

-sourcepassword source_password
Пароль для имени входа, используемого для подключения к исходному серверу с помощью проверки подлинности SQL Server .

Важно!

По возможности указывайте учетные данные во время выполнения. Если необходимо хранить учетные данные в файле скрипта, необходимо обеспечить его безопасность, чтобы предотвратить несанкционированный доступ.

-sourceuser source_login
Имя входа, используемое для подключения к исходному серверу с помощью проверки подлинности SQL Server . Если исходное_имя_входа не указано, для соединения с исходным сервером используется проверка подлинности Windows. По возможности используйте аутентификацию Windows.

-sourcelocked
Исходная таблица блокируется в ходе сравнения при помощи табличных подсказок TABLOCK и HOLDLOCK.

-destinationserver destination_server_name[ \ instance_name]
Имя целевого сервера. Укажите имя_целевого_сервера для экземпляра SQL Serverпо умолчанию. Укажите имя_целевого_сервера \ имя_экземпляра для именованного экземпляра SQL Server.

-destinationdatabase subscription_database
Имя целевой базы данных.

-destinationtable destination_table
Имя целевой таблицы.

-destinationschema destination_schema_name
Владелец схемы целевой таблицы. Владельцем таблицы по умолчанию считается dbo.

-destinationpassword destination_password
Пароль для имени входа, используемого для подключения к целевому серверу с помощью проверки подлинности SQL Server .

Важно!

По возможности указывайте учетные данные во время выполнения. Если необходимо хранить учетные данные в файле скрипта, необходимо обеспечить его безопасность, чтобы предотвратить несанкционированный доступ.

-destinationuser destination_login
Имя входа, используемое для подключения к целевому серверу с помощью проверки подлинности SQL Server . Если целевое_имя_входа не указано, для соединения с исходным сервером используется проверка подлинности Windows. По возможности используйте аутентификацию Windows.

-destinationlocked
Целевая таблица блокируется в ходе сравнения при помощи табличных указаний TABLOCK и HOLDLOCK.

-b large_object_bytes
Число байтов для сравнения столбцов, содержащих данные типа больших объектов, к которым относятся: text, ntext, image, varchar(max) , nvarchar(max) и varbinary(max) . число_байтов_больших_объектов по умолчанию имеет размер столбца. Любые данные, размер которых превышает значение число_байтов_больших_объектов , не учитываются при сравнении.

-bf number_of_statements
Число инструкций Transact-SQL для записи в текущий файл скрипта Transact-SQL при использовании параметра -f . Когда число инструкций Transact-SQL превышает значение число_инструкций, создается новый файл скрипта Transact-SQL .

-c
Сравнение на уровне столбцов.

-dt
Удаление таблицы результатов, указанной в аргументе имя_таблицы, если она уже существует.

-et table_name
Имя создаваемой таблицы результатов. Если таблица уже существует, необходимо использовать аргумент -DT , иначе операция завершится ошибкой.

-f [ имя_файла ]
Формирует скрипт Transact-SQL , по которому обеспечивается конвергенция таблицы на целевом сервере и таблицы на исходном сервере. Можно дополнительно указать имя и путь для создаваемого файла скрипта Transact-SQL . Если параметр имя_файла не указан, файл скрипта Transact-SQL создается в каталоге, в котором запущена данная программа.

-o output_file_name
Полное имя и путь файла вывода.

-q
Быстрое сравнение, сравнивающее только схемы и количество строк.

-rc number_of_retries
Количество попыток повтора программой неудачно завершившейся операции.

-ri retry_interval
Интервал в секундах между повторными попытками.

-strict
Строгая проверка исходной и целевой схем.

-t connection_timeouts
Устанавливает время ожидания в секундах для соединений с исходным сервером и целевым сервером.

Возвращаемое значение

Значение Описание
0 Успешно
1 Критическая ошибка
2 Различия таблиц

Remarks

Служебную программу 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 запрещает такое сопоставление и выполняет строгую проверку.

Исходная таблица при данном сравнении должна содержать хотя бы один столбец первичного ключа, столбец идентификаторов или столбец ROWGUID. При использовании параметра -strict целевая таблица также должна содержать столбец первичного ключа, столбец идентификаторов или столбец 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 на схему конечного владельца на целевом сервере.

Чтобы использовать параметр -o или -f , необходимо иметь разрешения на запись в указанный каталог файлов.

См. также:

Сравнение реплицируемых таблиц на предмет различий (программирование репликации)