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

How to make Password column in Sql Server 2008 case sensitive?

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

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

我的表架构是

create table Users
(
UserId int identity constraint PK_UserID primary key,
RoleId int constraint FK_Role_Users_RoleID foreign key references Roles(RoleId),
Username nvarchar(256) not null constraint U_Users_Username unique ,
Password nvarchar(256) not null
)


这就是一个排序规则可以发挥作用的地方。

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

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

另请参见:

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

SQL SERVER – Collate – Case Sensitive SQL Query Search

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