3

MSSQL Server 位于“abc”域中并具有混合模式身份验证。我从不在域或域“xyz”但使用 MSSQL Jdbc 驱动程序 2.0 的同一网络中的机器连接。我在 xyz 域中以管理员或帐户身份登录。

使用以下 url 连接“sa”或 SQL 模式身份验证可以正常工作。

jdbc:sqlserver://%DB_IP%:%DB_PORT%;SelectMethod=cursor;DatabaseName=dbname

它不适用于使用凭据的窗口身份验证,"MSSQLDomain\username""abc\username"使用以下 url

jdbc:sqlserver://%DB_IP%:%DB_PORT%;SelectMethod=cursor;integratedSecurity=true;DatabaseName=dbname;

给出以下错误。用户 '' 登录失败。用户未与受信任的 SQL Server 连接关联。

我尝试将属性 Trusted_Connection=Yes 添加到 url,但仍然给出相同的错误。我不想映射 SQL Server 的驱动器。通过提供“MSSQLDomain\username”和密码,我可以访问 SQL Server 机器的任何共享文件夹。

如果两台机器都在同一个域中,它适用于两种身份验证模式。如果我从不在域或同一网络(即同一子网)内的“xyz”域中的机器上使用 jtDS 驱动程序,它工作正常。

4

3 回答 3

2

这是 Windows 身份验证的故意和正确行为。

这是因为您从中连接的域与您的 SQL Server 实例所在的 Windows 域不同。

我相信可以说有一些方法可以桥接域,但是它们需要自定义和棘手的实现。您还必须配置域之间的信任关系。

以下主题包含您可能会发现有用的讨论。

http://sql-server-performance.com/Community/forums/p/24601/137574.aspx

于 2009-05-19T10:36:48.963 回答
2

更改登录凭据可能会有所帮助,请使用 SQL 身份验证而不是 nt 身份验证

https://support.microsoft.com/en-us/kb/555332

症状

安装 Microsoft SQL Server 2014、SQL Server 2012、SQL Server 2008、SQL Server 2005 或 SQL Server 2000 并尝试连接到运行 SQL Server 的服务器后,您会收到以下错误消息之一:

用户 '%.*ls' 登录失败。该登录名是 SQL Server 登录名,不能与 Windows 身份验证一起使用。%.*ls

用户 '' 登录失败。用户未与受信任的 SQL Server 连接关联。(Microsoft SQL Server,错误:18452)

用户 '' 登录失败。(Microsoft SQL Server,错误:18456)

解析度

如果用户尝试使用无法验证的凭据登录,则会出现此问题。在以下情况下可能会出现此问题:

场景一:

登录可能是 SQL Server 登录,但服务器只接受 Windows 身份验证

要解决此问题,请将 SQL Server 配置为混合身份验证模式。

场景二:

您正在尝试使用 SQL Server 身份验证进行连接,但使用的登录名在 SQL Server 上不存在

要解决此问题,请验证 SQL Server 登录是否存在。有关详细信息,请参阅 SQL Server 联机丛书中的创建登录。

场景 3:

登录可能使用 Windows 身份验证,但登录是无法识别的 Windows 主体

无法识别的 Windows 主体意味着 Windows 无法验证登录。这可能是因为 Windows 登录来自不受信任的域。要解决此问题,请确认您登录到正确的域。

于 2015-10-19T09:34:49.730 回答
0

我参与了跨域的 SQL 服务器连接,这非常痛苦。为了使用来自另一个域的凭据,您分配权限的域必须信任该帐户来自的域。IT 专业人员通常非常不愿意以这种方式信任另一个域,这是有充分理由的,因此如果尚未建立这种信任关系,它可能不太可能说服管理员这样做。

建立信任关系后,您可能需要在 Active Directory 中为您的 SQL 服务器注册 SPN,并分配委派权限。这种类型的环境很难设置、排除故障和维护。

我希望有其他方法可以做到这一点,因为听起来你正面临一个非常困难的情况。

希望对日韩有帮助

于 2009-05-19T10:55:58.100 回答