我们正在使用Windows身份验证使用SQL Server,发现需要指定SPN才能使连接正常工作。我们的应用程序部分使用通过UDL文件连接的VB6,部分使用通过LinqPad运行的一系列临时脚本。使用UDL文件的服务器SPN功能,我们可以使连接正常工作,但找不到LinqPad的等效功能。
有人知道怎么做吗?我们已尝试将ServerSPN=作为"高级"设置中的附加连接字符串参数,但它未被识别。
更多详细信息。
- 客户端应用程序在域A中的Windows 7上。所有客户端连接都是从域A中帐户建立的
- sql server位于域B中
- 域之间有一种选择性的单向信任,并且将服务器添加到启用该信任的组中
- linqpad连接的错误为:"目标主体名称不正确。无法生成SSPI上下文">
- UDL文件允许连接在设置了服务器SPN=值后工作,但在其他情况下会出现相同的错误
更新:在测试过程中,我们发现指定SPN会导致对服务器进行NTLM身份验证。因此,如果有一种方法可以迫使客户这样做,这对我们来说是一条可能的途径
更新+解决方法:我们偶然发现了一个解决方法,将服务器添加到具有不同名称的主机文件中似乎会触发同样的NTLM身份验证,以适用于LinqPad连接。如果有人了解如何正确修复此问题,我们将不胜感激,但目前我们正在使用主机文件解决方案。
感谢的任何帮助
我可以在这里想到几个可能的问题:
- 您的单向信任设置错误
- 它太挑剔了
- 域之间的AD版本不兼容
我建议您尝试使用Kerberos Configuration Manager for SQL Server,它可能会让您深入了解根本原因。
此外,我相信你可能更有机会在ServerFault上问这个问题,而不是在这里。从外观上看,这是一个错误的配置问题,与编程无关。