2010-07-18 12 views

risposta

19

Una colonna varbinary può memorizzare qualsiasi cosa. Per memorizzare una stringa in esso, dovresti gettarlo ai varbinary:

declare @t table (id int identity, pwd varbinary(50)) 
insert into @t (pwd) values (cast('secret' as varbinary(50))) 

Ma per una password, una colonna varbinary solitamente memorizza un hash di qualche tipo. Ad esempio, un hash SHA1 utilizzando il HashBytes function:

insert into @t (pwd) values (HashBytes('sha1', 'secret')); 

archiviare un hash a senso unico al posto della password reale è più sicura. È possibile verificare se la password corrisponde:

select * from @t where pwd = HashBytes('sha1', 'secret') 

Ma non è possibile recuperare la password guardando la tabella. Quindi solo l'utente finale conosce la sua password e nemmeno il DBA può recuperarla.

+0

posso memorizzare file raw come un file audio? – JerryGoyal

+0

@JerryGoyal sì. Un'altra cosa che si fa comunemente, è quella di archiviare file di grandi dimensioni su disco, ma solo archiviare i percorsi dei file nel DB – iliketocode

1

È necessario eseguire il cast esplicito di VARCHAR.

SELECT CAST(N'Test' as VARBINARY) 

Messaggio di errore del server SQL.

La conversione implicita dal tipo di dati varchar a varbinary non è consentita .

1

SQL Server richiede una conversione esplicita da varchar to varbinary, come per il grande tavolo sul CAST e CONVERT in MSDN

La tabella avrà una colonna varbinary per memorizzare i valori hash come da sys.sql_logins