sp_table_validation (Transact-SQL)

Применимо к:SQL Server

Либо возвращает количество строк или сведения о контрольной сумме для таблицы или индексированного представления, либо сравнивает заданное количество строк или сведения о контрольной сумме с заданной таблицей или индексированным представлением. Эта хранимая процедура выполняется на издателе в базе данных публикации и на подписчике в базе данных подписки.

Примечание.

sp_table_validation не поддерживается для издателей Oracle.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_table_validation [ @table = ] 'table'
    [ , [ @expected_rowcount = ] type_of_check_requested OUTPUT ]
    [ , [ @expected_checksum = ] expected_checksum OUTPUT ]
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @owner = ] 'owner' ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @table_name = ] 'table_name' ]
    [ , [ @column_list = ] 'column_list' ]
[ ; ]

Аргументы

[ = ] @table 'table'

Название таблицы. таблицаsysname, без значения по умолчанию.

[ @expected_rowcount = ] expected_rowcount OUTPUT

Указывает, должно ли быть возвращено ожидаемое количество строк в таблице. @expected_rowcount имеет значение int с значением по умолчаниюNULL. Если значение равно NULL, то фактическое число строк возвращается как выходной параметр. Если значение указано, то оно сверяется с фактическим количеством строк с целью нахождения различий.

[ @expected_checksum = ] expected_проверка sum OUTPUT

Указывает, должна ли быть возвращена ожидаемая контрольная сумма для таблицы. @expected_проверка sum имеет числовое значение по умолчаниюNULL. Если значение равно NULL, то фактическая контрольная сумма возвращается как выходной параметр. Если значение указано, то оно сверяется с фактической контрольной суммой с целью нахождения различий.

[ @rowcount_only = ] type_of_проверка_requested

Указывает, какого типа операцию нахождения контрольной суммы или значения количества строк нужно выполнить. @rowcount_only имеет небольшой размер с значением по умолчанию1.

Если 0выполните проверка sum, совместимую с строкой, и SQL Server 7.0.

Если 1выполните только проверка строк.

Если 2выполните проверка sum в строковом и двоичном проверка сюм.

[ @owner = ] "владелец"

Имя владельца таблицы. @owner — sysname с значением по умолчаниюNULL.

[ @full_or_fast = ] full_or_fast

Метод, используемый для вычисления числа строк. @full_or_fast крошечный, с значением по умолчанию 2и может быть одним из этих значений.

значение Описание
0 Выполняет полный подсчет с помощью функции COUNT(*).
1 Выполняет быстрый подсчет из sysindexes.rows. Подсчет строк sysindexes гораздо быстрее, чем подсчет строк в фактической таблице. Тем не менее, поскольку sysindexes лениво обновляется, число строк может быть не точным.
2 (по умолчанию) Выполняет быстрый подсчет по условию, при котором сначала используется быстрый метод. Если быстрый метод дает неточные результаты, переключается на полный подсчет. Если expected_rowcount имеет значение NULL, а хранимая процедура используется для получения значения, всегда используется полная COUNT(*) .

[ @shutdown_agent = ] shutdown_agent

Если выполняется sp_table_validationагент распространения, указывает, должен ли агент распространения завершить работу сразу после завершения проверки. @shutdown_agent бит с значением по умолчанию0. Если 0агент реплика tion не завершает работу. Если 1возникает ошибка 20578, а агент реплика tion сигнализирует о завершении работы. Этот параметр игнорируется при sp_table_validation выполнении непосредственно пользователем.

[ @table_name = ] 'table_name'

Имя таблицы представления, используемого для выходных сообщений. table_name — sysname с @table по умолчанию.

[ @column_list = ] 'column_list'

Список столбцов, которые следует использовать в функции проверка sum. column_list — nvarchar(4000) с значением по умолчаниюNULL. Включает проверку статей слияния для указания списка столбцов, в который не входят вычисляемые столбцы или столбцы с отметками времени.

Значения кода возврата

Если при выполнении проверки проверка сумы и ожидаемой проверка sum равен проверка суме в таблице, возвращается сообщение о том, sp_table_validation что таблица прошла проверку проверка sum. В противном случае будет выведено сообщение о том, что таблица может быть не синхронизирована, и отчет, показывающий разницу между ожидаемым и реальным числом строк.

Если выполнение проверки числа строк и ожидаемое количество строк равно числу в таблице, sp_table_validation возвращает сообщение о том, что таблица прошла проверку строк. В противном случае будет выведено сообщение о том, что таблица может быть не синхронизирована, и отчет, показывающий разницу между ожидаемым и реальным числом строк.

Замечания

sp_table_validationиспользуется во всех типах реплика tion. sp_table_validation не поддерживается для издателей Oracle.

Контрольная сумма выполняет 32-разрядную циклическую проверку избыточности (CRC) всего образа строки на странице. Она не производит выборочной проверки столбцов и не выполняет операций над представлением или вертикальной секцией таблицы. Кроме того, проверка sum пропускает содержимое столбцов текста и изображения (по конструктору).

При проверке контрольной суммы структура таблицы должна быть идентичной на двух серверах; таким образом, таблицы должны иметь одинаковые столбцы, расположенные в одинаковом порядке, один и тот же тип данных и длину и одинаковые условия NULL/NOT NULL. Например, если издатель создает таблицу инструкцией CREATE TABLE, а затем добавляет столбцы инструкцией ALTER TABLE, а выполняемый на подписчике скрипт выполняет только инструкцию CREATE (создает таблицу), то структуры НЕ БУДУТ одинаковыми. Если вы не уверены, что структура двух таблиц идентична, просмотрите syscolumns и убедитесь, что смещение в каждой таблице совпадает.

Значения с плавающей запятой, скорее всего, создают различия проверка sum, если использовался символьный режим bcp, то есть, если в публикации есть подписчики, отличные от SQL Server. Это связано с минимальными и неизбежными различиями в точности при преобразовании в символьный режим и из символьного режима.

Разрешения

Для выполнения sp_table_validationнеобходимо иметь разрешения SELECT для проверяемой таблицы.