BINARY_CHECKSUM (Transact-SQL)
Gibt den binären Prüfsummenwert zurück, der für eine Zeile einer Tabelle oder eine Liste von Ausdrücken berechnet wurde. Mit BINARY_CHECKSUM kann erkannt werden, ob Änderungen an einer Tabellenzeile vorgenommen wurden.
Transact-SQL-Syntaxkonventionen
Syntax
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Argumente
*
Gibt an, dass die Berechnung für alle Spalten der Tabelle erfolgt. BINARY_CHECKSUM ignoriert in seiner Berechnung jede Spalte, die einen nicht vergleichbaren Datentyp hat. Nicht vergleichbare Datentypen umfassen die Datentypen text, ntext, image, cursor, xml sowie nicht vergleichbare, benutzerdefinierte CLR-Typen (Common Language Runtime).expression
Ein Ausdruck beliebigen Typs. BINARY_CHECKSUM ignoriert in seiner Berechnung jeden Ausdruck, der einen nicht vergleichbaren Datentyp hat.
Hinweise
Wird BINARY_CHECKSUM(*) für eine beliebige Zeile einer Tabelle berechnet, gibt die Anweisung den gleichen Wert zurück, solange die Zeile nicht nachfolgend geändert wird. BINARY_CHECKSUM(*) gibt für die meisten (nicht für alle) Zeilenänderungen einen anderen Wert zurück und kann verwendet werden, um die meisten Zeilenänderungen zu erkennen.
BINARY_CHECKSUM kann auf eine Liste von Ausdrücken angewendet werden und gibt den gleichen Wert für eine angegebene Liste zurück. Wenn BINARY_CHECKSUM auf zwei beliebige Listen von Ausdrücken angewendet wird, wird stets der gleiche Wert zurückgegeben, wenn die entsprechenden Elemente der beiden Listen denselben Typ und dieselbe Bytedarstellung haben. Für diese Definition wird bei NULL-Werten eines angegebenen Datentyps angenommen, dass sie dieselbe Bytedarstellung haben.
BINARY_CHECKSUM und CHECKSUM können zur Berechnung eines Prüfsummenwerts für eine Liste mit Ausdrücken verwendet werden, wobei der berechnete Wert von der Reihenfolge der Ausdrücke abhängt. Die Reihenfolge von Spalten für BINARY_CHECKSUM(*) entspricht der in der Tabellen- oder Sichtdefinition angegebenen Reihenfolge von Spalten. Dazu gehören berechnete Spalten.
CHECKSUM und BINARY_CHECKSUM geben unterschiedliche Werte für die Zeichenfolgen-Datentypen zurück, bei denen aufgrund des Gebietsschemas unterschiedliche Repräsentationen als gleich betrachtet werden können. Die Zeichenfolgen-Datentypen sind char, varchar, nchar, nvarchar oder sql_variant (wenn der Basistyp von sql_variant ein Zeichenfolgen-Datentyp ist). Die BINARY_CHECKSUM-Werte für die Zeichenfolgen "McCavity" und "Mccavity" sind unterschiedlich. Bei einem Server ohne Unterscheidung nach Groß-/Kleinschreibung gibt CHECKSUM jedoch für diese Zeichenfolgen dieselben Prüfsummenwerte zurück. CHECKSUM-Werte sollten nicht mit BINARY_CHECKSUM-Werten verglichen werden.
Beispiele
Im folgenden Beispiel wird BINARY_CHECKSUM verwendet, um Änderungen in einer Zeile einer Tabelle zu erkennen.
USE AdventureWorks2012;
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