Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Система аналитической платформы (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]
Указывает имя исходного сервера. Укажите 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.
-заблокировано
Блокирует исходную таблицу во время сравнения, используя подсказки для таблицы TABLOCK и HOLDLOCK.
-destinationserver destination_server_name[\instance_name]
Указывает имя целевого сервера. Укажите destination_server_name для экземпляра SQL Server по умолчанию. Укажите <destination_server_name>\<instance_name> для именованного экземпляра SQL Server.
-destinationdatabase subscription_database
Указывает имя целевой базы данных.
-таблицаНазначения таблица_назначения
Указывает имя целевой таблицы.
-destinationschema destination_schema_name
Владелец схемы целевой таблицы. Владельцем таблицы по умолчанию считается dbo.
-destinationpassword destination_password
Указывает пароль для входа, используемого для подключения к целевому серверу с помощью проверки подлинности SQL Server.
Внимание
По возможности указывайте учетные данные во время выполнения. Если нужно хранить учетные данные в файле скрипта, для этого файла необходимо обеспечить защиту, чтобы исключить несанкционированный доступ.
-destinationuser destination_login
Указывает имя входа, используемое для подключения к целевому серверу с помощью проверки подлинности SQL Server. Если вы не предоставляете destination_login, подключение использует проверку подлинности Windows. По возможности используйте аутентификацию Windows.
-назначение заблокировано
Блокирует целевую таблицу во время сравнения, используя подсказки таблицы TABLOCK и HOLDLOCK.
-b large_object_bytes
Указывает количество байтов для сравнения столбцов типа больших объектов, которые включают текст, ntext, image, varchar(max), nvarchar(max)и varbinary(max). Значение по умолчанию для large_object_bytes — это размер столбца. Любые данные, превышающие large_object_bytes , не сравниваются.
-bf количество_заявлений
Указывает количество инструкций Transact-SQL, которое нужно записать в текущий файл скрипта Transact-SQL, когда используется параметр -f. Если число инструкций 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 количество_повторных_попыток
Количество попыток повтора программой неудачно завершившейся операции.
-ri retry_interval
Интервал в секундах между повторными попытками.
-strict
Сравнивает исходную и целевую схему строго.
-t тайм-ауты соединения
Устанавливает время ожидания в секундах для соединений с исходным сервером и целевым сервером.
Возвращаемое значение
| значение | Описание |
|---|---|
0 |
Успех |
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) | Изображение |
| text | varchar(max) |
| ntext | nvarchar(max) |
| Изображение | varbinary(max) |
-strict Используйте параметр, чтобы запретить эти сопоставления и выполнить строгую проверку.
Исходная таблица в сравнении должна содержать по крайней мере один идентификационный столбец, первичный ключ или ROWGUID столбец. При использовании параметра целевая -strict таблица также должна иметь первичный ключ, удостоверение или ROWGUID столбец.
Скрипт Transact-SQL, созданный для переноса целевой таблицы в конвергенцию, не включает следующие типы данных:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- timestamp
- xml
- text
- ntext
- Изображение
Разрешения
Для сравнения таблиц требуются SELECT ALL разрешения для сравниваемых объектов таблиц.
Чтобы использовать параметр -et, необходимо быть членом фиксированной роли базы данных db_owner или хотя бы иметь разрешение CREATE TABLE в базе данных подписки и разрешение ALTER на схему владельца назначения на целевом сервере.
Чтобы использовать опцию -dt, необходимо быть членом фиксированных ролей базы данных db_owner или иметь хотя бы ALTER разрешение на схему владельца назначения на сервере назначения.
Чтобы использовать параметры -o или -f, вы должны иметь права на запись в указанное местоположение каталога.