Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Adja vissza a bináris ellenőrző összeget, amelyet egy tábla során vagy kifejezéslistán keresztül számoltak ki.
Transact-SQL szintaxis konvenciók
Szemantika
BINARY_CHECKSUM ( * | expression [ , ...n ] )
Megjegyzés:
Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.
Arguments
*
Megadja, hogy a számítás lefedi az összes táblázatoszlopot.
BINARY_CHECKSUM figyelmen kívül hagyja a nem összehasonlítható adattípusok oszlopait a számítás során. Nem összehasonlítható adattípusok a következők:
- kurzor
- image
- kontextus
- text
- xml
- nem összehasonlítható közös nyelvi futás idejű (CLR) felhasználó által definiált típusok
kifejezés
Bármilyen típusú kifejezés .
BINARY_CHECKSUM figyelmen kívül hagyja a nem összehasonlítható adattípusok kifejezéseit a számítás során.
Visszatérési típusok
int
Megjegyzések
BINARY_CHECKSUM(*), bármely táblázat során kiszámítva, ugyanazt az értéket adja, amíg a sor később nem változik.
BINARY_CHECKSUM kielégíti egy hash függvény tulajdonságait: ha bármely két kifejezéslistára alkalmazzák, ugyanazt az értéket adja vissza, ha a két lista megfelelő elemei azonos típusúak, és egyenértékűek, ha az egyenlő (=) operátorral összehasonlítják.
Ebben a definícióban azt mondjuk, hogy a meghatározott típusú nullértékek egyenlő értékekként hasonlíthatók össze. Ha legalább az egyik érték megváltozik az expressziátlistában, az expresszíció ellenőrzőösszege is változhat. Ez a változás azonban nem garantált, ezért az értékek változásának felismeréséhez csak akkor kell használni BINARY_CHECKSUM , ha az alkalmazásod elviseli az alkalmi kihagyott változtatást. Ellenkező esetben fontold meg a használatot HASHBYTES . Egy meghatározott MD5 hash algoritmus esetén annak valószínűsége, hogy HASHBYTES két különböző bemenet esetén ugyanazt az eredményt adja vissza, sokkal alacsonyabb, mint BINARY_CHECKSUM.
BINARY_CHECKSUM képes egy kifejezéslistán működni, és ugyanazt az értéket adja vissza egy meghatározott listára.
BINARY_CHECKSUM bármely két kifejezéslistára alkalmazva ugyanazt az értéket adjuk, ha a két lista megfelelő elemei azonos típusú és bájtreprezentációval rendelkeznek. Ebben a definícióban a meghatározott típusú null értékeket ugyanúgy tekintjük, mint a bájtreprezentáció.
BINARY_CHECKSUM és CHECKSUM hasonló funkciók. Használhatók egy ellenőrző összeg érték kiszámítására egy kifejezéslistán, és a kifejezések sorrendje befolyásolja az eredményt kapott értéket. Az oszlopok sorrendje BINARY_CHECKSUM(*) a táblázatban vagy nézet definíciójában meghatározott oszlopok sorrendje. Ez a sorrend tartalmazza a számított oszlopokat is.
BINARY_CHECKSUM és CHECKSUM eltérő értékeket adnak vissza a string adattípusok esetén, ahol a helyi szint miatt a különböző reprezentációjú stringek egyenlőként hasonlíthatók össze. A string adattípusok a következők:
- karakteres
- nchar
- nvarchar
- varchar
- sql_variant (ha sql_variant alaptípusa egy string adattípus)
Például a és McCavity stringek Mccavity eltérő BINARY_CHECKSUM értékűek. Ezzel szemben egy kis- és nagybetűérzékeny szerver CHECKSUM ugyanazokat az ellenőrző összegösszegeket adja vissza ezekre a stringekre. Kerüld az értékek és CHECKSUM értékek BINARY_CHECKSUM összehasonlítását.
BINARY_CHECKSUM Támogat bármilyen hosszúságú varbinary(max) típust, valamint akár 255 karaktert is támogatja a nvarchar(n) / nvarchar(max) típust.
Példák
Ez a példa a tábla sorában lévő változások észlelésére szolgál BINARY_CHECKSUM .
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