tablediff, программа
Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)
Служебная программа tablediff используется для сравнения данных в двух таблицах на наличие неконвергенции и полезна для устранения неполадок в топологии репликации. Эта программа может запускаться из командной строки или из пакетного файла и служит для выполнения следующих задач:
Сравнение по строкам между исходной таблицей в экземпляре SQL Server, выступающей в качестве издателя репликации, и конечной таблицей в одном или нескольких экземплярах 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 ]
Указывает имя исходного сервера. Укажите имя_исходного_сервера для экземпляра 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. Если source_login не указан, при подключении к исходному серверу используется проверка подлинности 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. Если destination_login не указан, при подключении к серверу используется проверка подлинности Windows. По возможности используйте аутентификацию Windows.
-destinationlocked
Целевая таблица блокируется в ходе сравнения при помощи табличных указаний TABLOCK и HOLDLOCK.
-b large_object_bytes
Указывает количество байтов, сравниваемых для столбцов типа данных больших объектов, которые включают text, ntext, image, varchar(max), nvarchar(max) и varbinary(max). число_байтов_больших_объектов по умолчанию имеет размер столбца. Данные, превышающие large_object_bytes , не сравниваются.
-bf number_of_statements
Указывает количество инструкций Transact-SQL для записи в текущий файл скрипта Transact-SQL при -f
использовании параметра . Если число инструкций Transact-SQL превышает значение number_of_statements, создается новый файл скрипта Transact-SQL.
-c
Сравнение на уровне столбцов.
-dt
Удаление таблицы результатов, указанной в аргументе имя_таблицы, если она уже существует.
-et table_name
Имя создаваемой таблицы результатов. Если эта таблица уже существует, -DT
ее необходимо использовать, иначе операция завершится ошибкой.
-f [ имя_файла ]
Формирует скрипт Transact-SQL, по которому обеспечивается конвергенция таблицы на целевом сервере и таблицы на исходном сервере. Можно дополнительно указать имя и путь для создаваемого файла скрипта Transact-SQL. Если file_name не указан, файл скрипта 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
необходимо иметь разрешения на запись в указанное расположение каталога файлов.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по