SQL Server

HASHBYTES() v SQL Serveru 2016

V SQL Serveru 2016 Microsoft konečně vyslyšel volání uživatelů po odstranění jedno z omezení funkce HASHBYTES(), a sice, že maximální délka vstupní hodnoty pro hashování byla omezena na 8000 bytes. SQL Server 2016 toto omezení neobsahuje a je možné získat hash pro BLOB až do maximální hodnoty datového typu, jak ukazuje příklad níže.

Pomocí HAHSBYTES() však stále není možné získat hash pro více než jeden sloupec, jako to umí CHECKSUM(), který je však více méně nepoužitelný díky velké pravděpodobnosti, že získáme stejný hash pro různé hodnoty.  V případě HASHBYTES() jsme tak stále odkázání na spojování řetězců a řešení NULL hodnot. (Microsoft Connect).

DECLARE @StringToHash nvarchar(MAX);

SET @StringToHash = REPLICATE(CAST('0123456789' AS NVARCHAR(MAX)), 5000)

SELECT LEN(@StringToHash) StringLen
 
SELECT HASHBYTES('SHA2_256', @StringToHash) HashValue;
GO

hashbytes-in-sql-server-2016

 

Leave a Reply

Your email address will not be published. Required fields are marked *