我正在尝试使用以下命令登录到 SQL Server 2005 Express 实例:
osql -S .\INSTANCE -U sa -P password
我收到错误:用户“sa”登录失败。
我可以使用 -E 开关正常连接。我必须补充一点,它已经工作了几个月。我想有人改变了一些东西,但我不知道是什么。
这是我尝试过的:
使用Windows身份验证登录并更改sa密码:
sp_password NULL,新密码,'sa'
启用“sa”登录:
ALTER LOGIN sa ENABLE ; GO ALTER LOGIN sa WITH PASSWORD = 'newpassword' ; GO
检查 Windows 注册表以确保混合身份验证已启用。值正确:登录模式=2
我还应该检查什么?提前致谢。
附加信息:
这是 Windows 2003 Server。他们启用了一些密码策略,我记得我需要将应用程序在安装 SQL Server 时使用的默认“sa”密码更改为另一个更复杂的密码。
我正在使用 VNC 进行连接,因此无法使用 SSMS
我的应用程序可以使用另一个 SQL Server 登录名进行连接,但无法使用“sa”
最后,如果我们找不到解决方案,我会删除此实例并重新安装,但我真的很想找出问题所在。以防万一再次发生,也只是为了好奇。
答案1
就像@SpaceManSpiff说的,不要忘记检查混合模式是否已启用。有人为我更改了该设置,但我遇到了同样的问题。解决方法如下:
- 使用 Windows 身份验证登录 MSSQL Server Management Studio。
- 在 SQL Server Management Studio 对象资源管理器中,右键单击服务器,然后单击“属性”。
- 在服务器属性下,选择“安全”页面。
- 选择服务器身份验证为“SQL Server 和 Windows 身份验证模式”,然后单击确定。
- 重新启动 SQL 服务,然后尝试使用“sa”详细信息登录。
来源: http://forums.eukhost.com/f15/login-failed-user-sa-microsoft-sql-server-error-18456-a-12544/
答案2
好的,我已经能够弄清楚发生了什么(有点)并找到了解决方法。
似乎一周前他们玩使用 Windows 安全策略。他们正在添加/删除权限,但他们无法告诉我他们到底做了什么,因为他们真的不知道(哎哟!)。
无论如何,我使用 Windows 身份验证(-E 开关)连接并运行以下查询:
ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF
GO
ALTER LOGIN [sa] ENABLE
GO
关键是CHECK_POLICY=关闭。这就是诀窍。我希望这能让“sa”免受其域设置未来更改的影响。
感谢您的所有建议。
答案3
检查事项
SA 帐户密码
已启用混合模式
SA帐号被禁用了吗?
创建另一个 SQL 帐户并尝试(因为您可以使用 -E 进入,所以您应该可以做到这一点)
使用 ODBC 连接进行测试,您可以创建此连接来查看 SA 是否正常工作
哦,还有在 Windows 中总是捕获所有东西,然后重新启动(认真的说,这对我在对 SQL 服务器进行测试后有所帮助)
答案4
如果您正在安装 SQL Express 2014,则在尝试使用 [sa] 帐户登录时,您必须做一些事情来解决此错误。
“sa”帐户将被禁用。因此,您需要在帐户状态部分下将帐户从禁用状态切换为启用状态。
服务器必须启用 Windows 和 SQL Server 身份验证。默认情况下,仅启用 Windows 身份验证。
重置密码。(参见下面的代码;ServerFault 有一个错误,截至 2016 年 6 月 8 日,使用有序列表时代码不会显示相同)
重新启动 SQL Server 的 Windows 服务
=========
ALTER LOGIN sa WITH PASSWORD='password', CHECK_POLICY=OFF;
ALTER LOGIN [sa] ENABLE;