SQLServer 登陆问题

之前装的SQLServer Express,今天想来用下,却发现无法登陆了。这个无法登陆指的是用sa用户。因为我要在程序中访问数据库,必须要使用用户名和密码。

sqlcmd -Usa -Pxxx
消息 18456,级别 14,状态 1,服务器 FRED\SQLEXPRESS,第 1 行
用户 'sa' 登录失败。

然而不用用户名密码时却可以访问

sqlcmd
1>

查看日志
C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Log\ERRORLOG
发现

2016-04-09 11:25:03.14 登录          错误: 18456,严重性: 14,状态: 58。
2016-04-09 11:25:03.14 登录          Login failed for user 'sa'.原因: 尝试使用 SQL 身份验证登录失败。服务器配置为仅使用 Windows 身份验证。 [客户端: 192.168.1.107]


然后在网上搜了一通,才知道原来是SQLServer有两种登陆方式:windows账户方式 与 SQLServer和Windows混合登陆。

windows账户方式在登陆时会默认用当前的windows登录的账户为依据去访问SQLServer,不需要输入用户名密码。
第二种混合方式会用指定的账户去登陆。包括sa。

网上说的方法大多是通过SQLServer客户端采用第一种登陆进去,然后可以设置数据库的登陆方式。但是我发现我这里没有按照客户端,不能通过界面的方式去修改。最终找到了可以在注册表中修改:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQLServer
下的LoginMode项, 将其值从1改为2(十六进制下的)。(这个注册表路径可能和具体的环境有关,不一定完全相同)
注意,要先停止SQLServer服务。修改完后,再启动。

但是,这样做了之后,我再次以sa账户登录,还是报错。
查看日志
2016-04-09 11:07:56.89 登录          错误: 18456,严重性: 14,状态: 7。
2016-04-09 11:07:56.89 登录          Login failed for user 'sa'. 原因: 评估密码时出错。 [客户端: 192.168.1.107]




这个“评估密码出错”,经过一番查找,猜测可能是密码过期了。于是我就以第一种方式登陆进去,然后修改sa的密码。

ALTER LOGIN sa WITH PASSWORD='*********'
go
ALTER LOGIN sa ENABLE
go

然后在使用新的密码进行登录,成功。


顺便再说下关于SQLServer服务的问题:
打开“SQLServer配置管理器”:
如下可配置SQLServer启动的端口



注意SQLServer服务的属性的登陆身份选择 Network Service







猜你喜欢

转载自foreach4.iteye.com/blog/2289790