Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Gibt den binären Prüfsummenwert zurück, der für eine Zeile einer Tabelle oder eine Liste von Ausdrücken berechnet wurde.
Transact-SQL-Syntaxkonventionen
Syntax
BINARY_CHECKSUM ( * | expression [ , ...n ] )
Hinweis
Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Argumente
*
Gibt an, dass die Berechnung für alle Spalten der Tabelle erfolgt.
BINARY_CHECKSUM ignoriert Spalten mit nicht vergleichbaren Datentypen in seiner Berechnung. Nicht vergleichbare Datentypen umfassen:
- Cursor
- image
- ntext
- text
- xml
- nicht vergleichbare Common Language Runtime (CLR) benutzerdefinierte Typen
expression
Ein Ausdruck beliebigen Typs.
BINARY_CHECKSUM ignoriert Ausdrücke nicht vergleichbarer Datentypen in seiner Berechnung.
Rückgabetypen
int
Bemerkungen
Wird BINARY_CHECKSUM(*) für eine beliebige Zeile einer Tabelle berechnet, gibt die Anweisung den gleichen Wert zurück, solange die Zeile nicht später geändert wird.
BINARY_CHECKSUM erfüllt die Eigenschaften einer Hashfunktion: Wenn sie auf beliebige zwei Ausdrückelisten angewendet wird, gibt sie denselben Wert zurück, wenn die entsprechenden Elemente der beiden Listen denselben Typ haben und gleich sind, wenn sie mit dem Equals-(=)-Operator verglichen werden.
Bei dieser Definition werden die NULL-Werte eines angegebenen Typs bei einem Vergleich als gleiche Werte angesehen. Wenn sich einer der Werte in der Liste mit Ausdrücken ändert, ändert sich gewöhnlich auch die Prüfsumme des Ausdrucks. Diese Änderung ist jedoch nicht garantiert, und um zu erkennen, ob sich Werte geändert haben, sollten Sie nur verwenden BINARY_CHECKSUM , wenn Ihre Anwendung gelegentlich eine verpasste Änderung tolerieren kann. Sie sollten andernfalls in Betracht ziehen, stattdessen HASHBYTES zu verwenden. Mit einem spezifizierten MD5-Hashalgorithmus ist die Wahrscheinlichkeit, dass HASHBYTES das gleiche Ergebnis für zwei verschiedene Eingaben zurückgegeben wird, deutlich geringer als BINARY_CHECKSUM.
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 sind ähnliche Funktionen. Sie 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 Spaltenreihenfolge, die bei BINARY_CHECKSUM(*) verwendet wird, ist die Spaltenreihenfolge, die in der Tabellen- oder Sichtdefinition angegeben ist. Diese Reihenfolge die berechneten Spalten ein.
BINARY_CHECKSUM und CHECKSUM geben unterschiedliche Werte für die String-Datentypen zurück, bei denen aufgrund des Gebietsschemas unterschiedliche Repräsentationen als gleich betrachtet werden können. Die String-Datentypen sind:
- char
- nchar
- nvarchar
- varchar
- sql_variant (wenn der Basistyp von sql_variant ein String-Datentyp ist)
Zum Beispiel haben die Strings McCavity und Mccavity unterschiedliche BINARY_CHECKSUM Werte. Bei einem Server ohne Unterscheidung nach Groß-/Kleinschreibung gibt CHECKSUM jedoch für diese Zeichenfolgen dieselben Prüfsummenwerte zurück. Sie sollten Vergleiche zwischen CHECKSUM-Werten und BINARY_CHECKSUM-Werten vermeiden.
BINARY_CHECKSUMunterstützt jede Länge des Typs varbinary(max) und bis zu 255 Zeichen des Typs nvarchar(n) / nvarchar(max).
Beispiele
Im folgenden Beispiel wird BINARY_CHECKSUM verwendet, um Änderungen in einer Zeile einer Tabelle zu erkennen.
USE AdventureWorks2022;
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