使用缓存凭据跨域边界连接到SQL 2005

时间:2008-08-22 14:28:18

标签: sql-server ssms

自从我的开发机器转移到Vista之后,从SSMS等客户端工具连接到DMZ活动目录域中的SQL Server并没有像以前那样工作。在XP中,只要我在服务器上以某种方式进行身份验证(例如将Explorer指向\ server.dmzdomain \ c $并在登录提示中输入有效的信用卡),SSMS就会使用这些缓存的凭据进行连接。

然而,自从切换到Vista后,当尝试将SSMS连接到DMZ域中的服务器时,我收到消息用户登录失败''。用户未与受信任的SQL Server连接关联。如果我更改连接选项以使用命名管道而不是默认的TCP / IP,则会发送我的缓存凭据,一切正常。无论Windows防火墙是打开还是打开,并且与我们内部域中的服务器(我的开发PC所在的域)的连接都可以在TCP / IP或命名管道上正常工作。

我不介意使用命名管道作为解决方法使用这些连接,但似乎TCP / IP是推荐的连接方法,我不喜欢不理解为什么它不能像我期望的那样工作。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

“用户登录失败”,用户未与受信任的SQL Server连接相关联。“

在这种情况下,客户端可以进行tcp连接,并且在本地管理员或非管理员计算机帐户下运行,无论SPN是否已注册,SQL Server显然都无法识别客户端凭证。

此处的解决方法是:

在目标SQL Server计算机上使用相同密码创建与客户端计算机上的帐户相同的帐户,并为该帐户授予适当的权限。

让我们更详细地解释一下:

当你在两者上创建相同的NT帐户(我们称之为usr1) 工作站,你基本上连接和冒充本地帐户 连接站。即当你从station1连接到station2时, 您正在通过station2的帐户进行身份验证。所以,如果你设置了 SQL Server的启动帐户(让我们假设它在station2上运行) station2的usr1,当你从station1用station1的usr1连接到SQL时 登录时,SQL会将您作为station2的usr1进行身份验证。

现在,在SQL中,您肯定可以访问station1的资源。虽然如何 访问权限取决于station1的usr1权限。

到目前为止,SQL只处理属于sysadmin角色的用户 SQL Server。允许其他用户(非sysamdin)访问网络资源, 您必须设置代理帐户。看一下这篇文章吧 附加信息。 取自http://blogs.msdn.com/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

答案 1 :(得分:0)

您是否尝试在提升模式下运行SSMS,并且您是否在客户端上安装了最新的SP?

答案 2 :(得分:0)

我认为这是因为Vista独立运行大多数应用程序。

我建议您设置DMZ用户名和密码以匹配内部域用户名和密码,或使用命名管道进行连接。