2010-07-18 6 views

Antwort

19

Eine varbinary Spalte kann alles speichern. So speichern Sie eine Zeichenfolge in es, würden Sie es varbinary werfen müssen:

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

Aber für ein Passwort, eine varbinary Spalte speichert in der Regel einen Hash irgendeiner Art. Zum Beispiel mit einem SHA1-Hash der HashBytes function:

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

Speichern eines Einweg-Hash anstelle des echten Passwort sicherer ist. Sie können überprüfen, ob das Passwort übereinstimmt:

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

Aber es gibt keine Möglichkeit, das Passwort durch einen Blick auf die Tabelle abrufen können. So kennt nur der Endbenutzer sein Passwort und nicht einmal der DBA kann es abrufen.

+0

kann ich speichern Rohdateien wie eine Audiodatei? – JerryGoyal

+0

@JerryGoyal ja. Eine andere Sache, die üblicherweise gemacht wird, ist es, größere Dateien auf der Festplatte zu speichern und nur die Dateipfade in der DB zu speichern – iliketocode

1

Sie müssen VARCHAR explizit umwandeln.

SQL Server-Fehlermeldung sagt.

Implizite Konvertierung vom Datentyp varchar in varbinary ist nicht zulässig zulässig.

1

SQL Server erfordert eine explizite Umwandlung von varchar to varbinary, gemäß dem großen Tisch auf CAST und CONVERT in MSDN

Die Tabelle eine varbinary-Spalte als Hash-Werte speichern pro sys.sql_logins