В некоторых ситуациях вам может понадобиться сохранить пароли в виде открытого текста, поэтому я не буду повторять совет, который дают все остальные, хотя обычно он звучит нормально.
Помимо установки параметров сортировки, вы также можете использовать трюк с varbinary следующим образом:
WHERE
CAST(Password as varbinary(20)) = CAST(@Password as varbinary(20)) AND
CAST(Username as varbinary(20)) = CAST(@Username as varbinary(20))
Приведенное выше также приведет к поиску с учетом регистра - просто не забудьте установить длину varbinary равной длине поля.
Чтобы избежать сканирования по индексу, вы также можете включить поиск без учета регистра, который будет выполнять поиск по индексу и впоследствии выполнять поиск по переменной:
WHERE
Password = @Password AND
Username = @Username AND
CAST(Password as varbinary(20)) = CAST(@Password as varbinary(20)) AND
CAST(Username as varbinary(20)) = CAST(@Username as varbinary(20))