使用 Sql Studio Express(在 Windows 7-64 机器上)使用 Sql Server 身份验证连接到三个不同的 Sql Server 2005 服务器,我收到错误:1846,状态:8。根据http://blogs.msdn.com /b/sql_protocols/archive/2006/02/21/536201.aspx,这应该是密码不匹配。

然而,当我从 SQLCMD 和基于 jdbc 的客户端(如 Squirrel)使用相同的用户名和密码时,它可以很好地连接到所有三个服务器。我还可以使用相同的用户名和密码从带有 Sql Studio Express 的 XP 机器登录到它们。当然,我已经四重检查了所有正常的事情,比如我的大写锁定没有打开,我没有设置其他语言键盘,我在两种情况下都输入了完全相同的东西,等等。
无论如何,当密码正确时,为什么我会收到密码不匹配错误?可能与机器上不同版本的 MDAC 有关系,如果是这样,有没有办法将 Windows 7 恢复到旧版本的 MDAC?
我会按照难度顺序尝试以下事情:
首先,我会尝试使用实例名称 10.19.190.x IP 地址:10.19.190.x\instance_name,也按服务器名称。我怀疑这可能是一个协议问题(更多内容见下文),这可能会改变它尝试连接的方式。
其次,它可能只是一个错误,但由于有些人是剪切和粘贴的,所以它可能只是一个隐藏的字符。我在帖子中看到过一些人这样做:输入密码后,将光标移回登录框的开头,然后按 Enter/Connect。你是复制粘贴pw吗?
是否有任何软件防火墙阻碍?暂时禁用它们,因为可能有其他端口正在使用中,但这些端口已被阻止。
我还想知道一个(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
Run Code Online (Sandbox Code Playgroud)
另外,您是否考虑过配置登录审核?
http://msdn.microsoft.com/en-us/library/ms175850.aspx
如果这些都不起作用,那么查看您用于登录 SLQ 管理器的 SQLername 的格式以及您正在使用的 SQLCMD 字符串将会非常有帮助。当然,可以更改任何特定内容,但用户名是“sa”除外。还有一个问题:一个 SQL Server 环境还是多个?
我在这里找到了其中一些内容,但进行了筛选,只找到了我认为可能相关的内容:链接
| 归档时间: |
|
| 查看次数: |
10778 次 |
| 最近记录: |