如何使Sql Server 2008中的密码列区分大小写?

时间:2014-04-12 20:38:54

标签: sql sql-server sql-server-2008

在登录窗口中,如果密码不匹配,则必须显示错误。 我所做的所有编码,但问题是在Sql Server密码列中,它不区分大小写,我不知道如何实现这一点。

如果用户有密码abc09Fd并且他以ABC09fD格式输入密码,则SQL Server会让他登录。如何解决这个问题。

我的表架构是

  

创建表用户
  (
  UserId int identity constraint PK_UserID主键,
  RoleId int约束FK_Role_Users_RoleID外键引用角色(RoleId),
  用户名nvarchar(256)非空约束U_Users_Username唯一,
  密码nvarchar(256)不为null   )

1 个答案:

答案 0 :(得分:1)

这是整理可以发挥作用的地方。

正如其他人所指出的,请注意存储密码
在纯文本中远非一个好主意。

SELECT [Password]
FROM [Users]
WHERE [Password] COLLATE Latin1_General_CS_AS = 'PaSSWord'

另见:

http://msdn.microsoft.com/en-us/library/ms144250.aspx

http://blog.sqlauthority.com/2007/04/30/case-sensitive-sql-query-search/

http://www.sqlservercentral.com/blogs/rocks/2012/01/09/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as/