昨天我费了好大劲,试图从未加入域的客户端登录加入域的服务器上的 SQL Server 2008 实例。所涉及的计算机:
-fhsvr 是运行 SQL Server 2008 Express 实例的已加入域的计算机。-该
实例是默认的 SQLEXPRESS,因此该实例的完整路径是 fhsvr\SQLEXPRESS。
-posregister1 是我尝试连接的客户端计算机。它未加入域。
我尝试使用命名管道和 SQL Server 身份验证进行连接,这两项功能均已启用。所有端口均为标准端口。已设置所有必要的(以及一些不必要的)防火墙例外。使用 SQL Server 身份验证和命名管道的连接均可在域内进行。
但当我尝试从域外连接时,我得到了命名管道提供程序:无法打开与 SQL Server 的连接 [2]错误。这个问题可以通过在未加入域的机器上的 Windows 凭据存储中存储域凭据来解决,但显然这不是一个好的长期解决方案。
假设相同的连接字符串在域内有效,那么当尝试从域外连接时,什么可能导致此问题?我还应该注意,计算机能够正常通信。如上所述,只需将域凭据添加到 Windows 凭据存储即可解决此问题,因此这显然不是网络/防火墙/等问题。
是否有某些 GPO 可能会影响此情况?SQL Server 中是否有可能影响此情况的设置?
啊,还有一点:我们最终试图在这里连接销售点软件,不幸的是,该软件仅支持使用命名管道的连接 - 不支持在没有命名管道的情况下建立直接 TCP/IP 连接。
谢谢你尽你所能的帮助。
答案1
有一个 GPO:“网络访问:可以匿名访问的命名管道”域连接服务器的默认值不允许连接到 SQL Server 的命名管道。
默认实例的管道名称是“sql\query”。您必须在 SQL Server 配置管理器 - 网络配置 - 协议 - 命名管道下查找命名实例的管道名称。
更多内容请见: http://technet.microsoft.com/en-us/library/jj852278.aspx