Поле пароля в моей пользовательской таблице (SQL Server 2008) зашифровано с использованием HASHBYTES при вставке. У меня есть хранимая процедура с параметрами для имени пользователя и обычного текстового пароля, которая выполняет SELECT, используя это имя пользователя и пароль, отправленные через HASHBYTES, а затем возвращает запись пользователя, если обнаружит совпадение. SP всегда возвращает пустой набор записей, но если я скопирую и вставлю только SELECT из SP в новое окно запроса, он вернет соответствующую запись. Других утверждений в SP нет. Я что-то здесь упускаю; что это?
HASHBYTES
SELECT
Если SELECT сам по себе работает, но внутри процедуры это не так, первое, что я бы искал, это типы параметров. Хеш будет сильно различаться при одинаковом вводе, но разных типах:
select hashbytes('MD5','Lorem Ipsum'), hashbytes('MD5',N'Lorem Ipsum')
Как вы передаете параметры при вызове из своего кода? Есть ли встроенные CR / LF или пробелы?