BINARY_CHECKSUM (Transact-SQL)
Возвращает двоичное значение контрольной суммы, вычисленное для строки таблицы или для списка выражений. Функция BINARY_CHECKSUM может быть использована для выявления изменений строк таблицы.
Синтаксис
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Аргументы
*
Указывает, что вычисление выполняется для всех столбцов таблицы. При выполнении функции BINARY_CHECKSUM столбцы с несопоставимыми типами данных игнорируются. К несопоставимым типам данных относятся text, ntext, image, cursor, xml, а также несопоставимые пользовательские типы среды CLR.expression
Выражение любого типа. При выполнении функции BINARY_CHECKSUM выражения с несопоставимыми типами данных игнорируются.
Замечания
Результат, возвращаемый функцией BINARY_CHECKSUM(*) для строки таблицы, изменяется только при изменении указанной строки. Результат, возвращаемый функцией BINARY_CHECKSUM(*) для строки таблицы, изменяется при внесении большинства (но не всех) типов изменений в строку. Поэтому данную функцию можно использовать для обнаружения большинства типов изменений.
Функция BINARY_CHECKSUM может применяться к списку выражений, причем ее результаты для данного списка совпадают. Функция BINARY_CHECKSUM вернет одинаковый результат для двух любых списков выражений в том случае, если тип и байтовое представление соответствующих друг другу элементов списков совпадают. В данном случае значения NULL одинакового типа рассматриваются как значения с одинаковым байтовым представлением.
Функции BINARY_CHECKSUM и CHECKSUM похожи. Они могут быть использованы для вычисления контрольной суммы списка выражений, при этом порядок следования выражений влияет на значение результата. Порядок следования столбцов, используемый функцией BINARY_CHECKSUM(*), соответствует порядку столбцов в определении таблицы или представления. Это касается и вычисляемых столбцов.
Функции CHECKSUM и BINARY_CHECKSUM возвращают различные значения для строковых типов данных, в которых из-за локали строки с различными представлениями могут оказаться эквивалентными. К строковым типам данных относятся char, varchar, nchar, nvarchar или sql_variant (если базовый тип sql_variant является строковым типом данных). Например, функция BINARY_CHECKSUM возвращает различные результаты для строк McCavity и Mccavity. Однако при использовании функции CHECKSUM на сервере, нечувствительном к регистру, результаты для данных строк совпадают. Не следует сравнивать результаты выполнения функций CHECKSUM и BINARY_CHECKSUM.
Примеры
В следующем примере для выявления изменений в строке таблицы используется функция BINARY_CHECKSUM.
USE AdventureWorks2008R2;
GO
CREATE TABLE myTable (column1 int, column2 varchar(256));
GO
INSERT INTO myTable VALUES (1, 'test');
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
UPDATE myTable set column2 = 'TEST';
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
См. также