mi a különbség a CHECKSUM() és a BINARY_CHECKSUM() között, és mikor/melyek a megfelelő használati forgatókönyvek?
nézze meg a következő blogbejegyzést, amely kiemeli a különbségeket.
CHECKSUM Functions in SQL Server 2005
információ hozzáadása erről a linkről:
az ellenőrző összeg függvényeinek legfontosabb célja egy hash index felépítése egy kifejezés vagy oszloplista alapján. Ha azt mondja, hogy egy oszlop kiszámítására és tárolására használja a táblázat szintjén, hogy jelölje meg az ellenőrző összeget azon oszlopok felett, amelyek egy rekordot egyedivé tesznek egy táblázatban, akkor ez hasznos lehet annak meghatározásában, hogy egy sor megváltozott-e vagy sem. Ez a mechanizmus akkor használható, ahelyett, hogy összekapcsolná az összes oszlopot, amely egyedivé teszi a rekordot, hogy megnézze, frissült-e a rekord. Az SQL Server Books Online sok példát tartalmaz erre a funkcionalitásra.
néhány dolog, amire figyelni kell ezen funkciók használatakor:
meg kell győződnie arról, hogy az oszlop(ok) vagy a kifejezés sorrendje megegyezik a két összehasonlítandó ellenőrző összeg között, különben az érték eltérő lenne, és problémákhoz vezetne.
nem javasoljuk az ellenőrző összeg(*) használatát, mivel az így generált érték a táblázat definíciójának oszlopsorrendjén alapul futási időben, amely egy idő alatt könnyen megváltozhat. Tehát kifejezetten határozza meg az oszloplistát.
legyen óvatos a datetime adattípusú oszlopok felvételekor, mivel a részletesség a másodperc 1/300-a, és még egy kis eltérés is eltérő ellenőrző összeget eredményez. Tehát, ha datetime adattípus oszlopot kell használnia, akkor győződjön meg róla, hogy a pontos dátumot + óra/perc. azaz a kívánt szemcseméret szintje.
három ellenőrző összeg áll az Ön rendelkezésére:
ellenőrző összeg: ezt fentebb leírtuk.
CHECKSUM_AGG: ez egy csoport értékeinek ellenőrző összegét adja vissza, ebben az esetben a Null értékek figyelmen kívül maradnak. Ez az SQL Server 2005 új analitikus függvényének OVER záradékával is működik.
BINARY_CHECKSUM: ahogy a név is mondja, ez egy sor vagy kifejezések listája alapján kiszámított bináris ellenőrző összeg értékét adja vissza. A CHECKSUM és a BINARY_CHECKSUM közötti különbség a string adattípusokhoz generált érték. Egy példa az ilyen különbség az értékek generált “megfejteni” és “megfejteni” eltérő lesz abban az esetben, BINARY_CHECKSUM de ugyanaz lesz a CHECKSUM függvény (feltételezve, hogy van egy eset érzéketlen telepítése a példány). Egy másik különbség a kifejezések összehasonlításában van. A BINARY_CHECKSUM() ugyanazt az értéket adja vissza, ha két kifejezés elemeinek típusa és bájt reprezentációja azonos. Tehát a” 2Volvo Director 20 “és a” 3volvo Director 30 ” ugyanazt az értéket adja, azonban a CHECKSUM() függvény kiértékeli a típust, és összehasonlítja a két karakterláncot, és ha egyenlőek, akkor csak ugyanazt az értéket adja vissza.
Example:STRING BINARY_CHECKSUM_USAGE CHECKSUM_USAGE------------------- ---------------------- -----------2Volvo Director 20 -1356512636 -3414654503Volvo Director 30 -1356512636 -3414538534Volvo Director 40 -1356512636 -341455363