sql-server - 有没有办法在使用 LinqPad 连接到 MSSQL 时指定 SPN
问题描述
我们正在使用 Windows 身份验证使用 SQL Server,并且发现我们需要指定 SPN 才能使连接正常工作。我们的应用程序部分使用通过 UDL 文件连接的 VB6,部分使用我们通过 LinqPad 运行的一系列临时脚本。使用 UDL 文件的服务器 SPN 功能,我们可以使连接正常工作,但找不到 LinqPad 的等效项。
有谁知道如何让这个工作?我们已尝试将 ServerSPN= 作为高级设置中的附加连接字符串参数,但无法识别。
更多详细信息。
- 客户端应用程序位于域 A 中的 Windows 7 上。所有客户端连接均来自域 A 中的帐户。
- sql server 在域 B 中。
- 域和服务器之间存在选择性的单向信任添加到启用该信任的组。
- 来自 linqpad 连接的错误是:“目标主体名称不正确。无法生成 SSPI 上下文”。
- 一旦设置了 Server SPN = 值,UDL 文件就允许连接工作,否则会出现相同的错误。
更新:在测试期间,我们发现指定 SPN 会导致对服务器进行 NTLM 身份验证。因此,如果有一种方法可以从客户端强制执行此操作,那么这对我们来说可能是一条可行的路线。
更新+解决方法:我们偶然发现了一种解决方法,将服务器添加到具有不同名称的主机文件中似乎会触发相同的回退到 NTLM 身份验证以用于 LinqPad 连接。如果有人了解如何正确解决此问题,我们仍将不胜感激,但目前我们正在使用 hostfile 解决方法。
任何帮助表示赞赏
解决方案
我可以在这里想到几个可能的问题:
- 您的单向信任设置错误;
- 太有选择性了;
- 域之间的 AD 版本不兼容。
我建议尝试使用 Kerberos Configuration Manager for SQL Server,它可能会让您深入了解根本原因。
另外,我相信你可能有更好的机会在 ServerFault 上而不是在这里问这个问题。从表面上看,这是一个配置错误的问题,与编程无关。
推荐阅读
- python - 熊猫数据框 str.match 和 str.contain
- tensorflow - TensorFlow v1:在进行逻辑回归时成本很高
- terraform - Terraform 在 for_each 上获取列表索引
- javascript - alpine.js - 循环中的按钮/单击多次触发
- c# - WPF TextBox 中与 HTML 中“输入”的“类型”相同的属性
- android - 为什么视图的背景和项目的可绘制颜色完全不同?
- nlp - 从预训练模型中获取句子的主题
- flutter - MaterialApp 中 onGenerateRoute 和 builder 的 Flutter 上下文问题
- python - 结帐表格未保存
- python - 编辑!!!在 Python 中创建二十一点游戏,播放时发生错误