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 для проверяемой таблицы.
Связанный контент
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по