代码之家  ›  专栏  ›  技术社区  ›  Mike Powell

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

  •  3
  • Mike Powell  · 技术社区  · 16 年前

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

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

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

    3 回复  |  直到 10 年前
        1
  •  1
  •   Booji Boy    16 年前

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

    在这种情况下,客户端可能会进行tcp连接,另外,在本地管理员或非管理员计算机帐户下运行,无论是否注册SPN,客户端凭据都明显无法被SQL Server识别。

    这里的解决方法是:

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

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

    当您在两个服务器上创建相同的NT帐户时(我们称之为usr1) 在工作站上,您基本上连接并模拟 中转站。也就是说,当你从1号站连接到2号站时, 你正在通过station2的帐户进行身份验证。所以,如果你设定 SQL Server的启动帐户(假设它正在station2上运行)为 station2的usr1,当您使用station1的usr1从station1连接到SQL时 登录后,SQL将验证您是否为station2的usr1。

    现在,在SQL中,您完全可以访问station1的资源。但是,怎么做 大部分访问权限将取决于station1的usr1许可。

    到目前为止,SQL只处理属于系统管理员角色的用户 SQL Server。要允许其他用户(非sysamdin)访问网络资源, 您必须设置代理帐户。请看这篇文章以了解更多信息 其他信息。 摘自 http://blogs.msdn.com/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

        2
  •  0
  •   Greg Hurlman    16 年前

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

        3
  •  0
  •   mrdenny    16 年前

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

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