无法连接 Sql Server Studio:错误 18456,状态 8——但密码正确

无法连接 Sql Server Studio:错误 18456,状态 8——但密码正确

使用 Sql Studio Express(在 Windows 7-64 计算机上)使用 Sql Server 身份验证连接到三个不同的 Sql Server 2005 服务器,出现错误:1846,状态:8。根据关联,这应该是密码不匹配。

在此处输入图片描述

但是,当我使用来自 SQLCMD 和基于 jdbc 的客户端(如 Squirrel)的相同用户名和密码时,它可以很好地连接到所有三个服务器。我还可以使用相同的用户名和密码从装有 Sql Studio Express 的 XP 计算机登录它们。当然,我已经四次检查了所有正常情况,例如我的大写锁定未打开,我没有设置其他语言键盘,我在两种情况下输入的内容完全相同,等等。

无论如何,为什么密码正确时会出现密码不匹配错误?这可能与机器上的 MDAC 版本不同有关,如果是,有没有办法将 Windows 7 恢复到旧版本的 MDAC?

答案1

我将按照难度顺序尝试以下事情:

首先,我会尝试使用实例名称 10.19.190.x IP 地址:10.19.190.x\instance_name,同样使用服务器名称。我怀疑这可能是协议问题(下文将详细介绍),这可能会改变它尝试连接的方式。

其次,这可能只是一个错误,但由于有些人在剪切和粘贴,所以它可能只是一个隐藏的字符。我在帖子中看到过一些人这样做:输入密码后,将光标移回登录框的开头,然后按 Enter/连接。你是复制并粘贴密码吗?

是否有软件防火墙?暂时禁用它们,因为可能还有其他正在使用的端口被阻止了。

我还想知道其中一个(SQLCMD 与 Studio)是否通过 TCP/IP 连接,而另一个通过命名管道连接,从而导致其中一个出现安全故障。我会检查 SQL 配置管理器(而不是 Management Studio)以确保所有协议都已启用,并查看将哪个设置为首选协议。启用 NamedPipes 和 TCP,并将共享内存设置为“已启用”。我对此深表怀疑。请查看此文档: http://groups.google.com/group/microsoft.public.inetserver.iis.security/browse_thread/thread/68c216b10e7fa70/69aacf4a582ec20c%2369aacf4a582ec20c?pli=1

尝试取消勾选 sa 用户属性中的强制密码策略。我也对此深表怀疑。

尝试从提示符运行此命令:

rundll32.exe keymgr.dll,KRShowKeyMgr

如果有任何与 SQL 相关的条目,请将其删除。尝试手动添加 SQL 的凭据。我曾见过 Vista(因此我认为 Windows 7 也是如此)剥离某些安全令牌的情况,并且我可以看到在命令行中可以绕过这种情况。

我还会尝试在 SQL 中重置 sa 密码,然后将其改回。然后,如果使用 sa 帐户启动 SQL Server,请更改任何与 SQL Server 相关的服务中的密码,然后重新启动它们(我正在尝试同步它们以匹配)。与此相关的是以下命令:

    exec sp_password @new = 'sqlpassword', @loginame = 'sa'
    alter login sa
    with password = 'sqlpassword' unlock,
    check_policy = off,
    check_expiration = off 

另外,您是否考虑过配置登录审计?

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

如果这些都不起作用,查看您用于登录 SLQ Manager 的 SQLername 格式以及您使用的 SQLCMD 字符串将非常有帮助。当然,更改任何特定内容,除非用户名是“sa”。还有一个问题:一个 SQL 服务器环境,还是多个?

我在这里找到了一些内容,但经过筛选,只找到了我认为可能相关的内容:关联

答案2

尝试使用命令提示符重置丢失的密码。我曾用它在 SQL Server 2000/2005 上成功重置丢失的密码。

  1. 打开命令提示符(开始 -> 运行 -> cmd)
  2. 键入以下命令,并在每行后按 Enter:

    Osql –S yourservername –E
    EXEC sp_password NULL, 'yourpassword', 'sa'
    GO
    

答案3

虽然可能性不大,但您可以检查 Windows 缓存的错误密码。

使用 rundll32.exe 访问存储的用户名和密码

存储的用户名和密码小程序可让您分配用户名和密码,以便在需要向您当前登录的域以外的域中的服务进行身份验证时使用。

运行此小程序的正常方法可能很难快速找到,因此这里有一种使用 rundll32.exe 程序通过桌面快捷方式启动它的方法:

单击“开始”-“运行”,然后键入以下内容(然后按 ENTER):

rundll32.exe keymgr.dll, KRShowKeyMgr

此后,您应该注销,然后重新登录。

答案4

您可以尝试使用 SQL Server 安装介质,并在 Windows 7 计算机上安装适当的 SQL Management Studio,看看是否效果更好。

相关内容