MSSQL Server位于“abc”域中并具有混合模式身份验证。 我从不在域中或在域“xyz”中的机器连接,但使用MSSQL Jdbc驱动程序2.0在同一网络中连接。我已在xyz域中以管理员或帐户登录。
使用以下url连接“sa”或SQL模式身份验证可以正常工作。
JDBC:SQLSERVER://%DB_IP%:%DB_PORT%; SelectMethod =光标;数据库名= DBNAME
不适用于使用凭证"MSSQLDomain\username"
进行窗口身份验证,即"abc\username"
,使用以下网址
JDBC:SQLSERVER://%DB_IP%:%DB_PORT%; SelectMethod =光标; integratedSecurity = TRUE;数据库名= dbname;开发
给出以下错误。 用户''登录失败。用户未与受信任的用户关联 SQL Server连接。
我尝试将属性Trusted_Connection = Yes添加到url,但仍然会出现同样的错误。 我不想映射SQL Server的驱动器。我可以通过提供“MSSQLDomain \ username”和密码来访问SQL Server计算机的任何共享文件夹。
如果两台计算机在同一个域中,则对于两种身份验证模式都可以正常工作。 如果我在不在域中的机器或同一网络内的“xyz”域中使用jtDS驱动程序,即同一子网,它可以正常工作。
答案 0 :(得分:2)
这是Windows身份验证的慎重和正确行为。
这是因为您从中连接的域与您的SQL Server实例所在的域不同。
我相信可以说有一些桥接域的方法,但是它们需要定制和棘手的实现。您还必须在域之间配置信任关系。
以下主题包含您可能会觉得有用的讨论。
http://sql-server-performance.com/Community/forums/p/24601/137574.aspx
答案 1 :(得分: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联机丛书中创建登录。
登录可能使用Windows身份验证,但登录是无法识别的Windows主体
无法识别的Windows主体意味着Windows无法验证登录信息。这可能是因为Windows登录来自不受信任的域。要解决此问题,请验证您是否已登录到正确的域。
答案 2 :(得分:0)
我参与过将SQL服务器连接交叉到这样的域,这非常痛苦。要使用其他域中的凭据,您分配权限的域必须信任该帐户所在的域。 IT专业人员通常非常不愿意以这种方式信任另一个域名,并且有充分的理由,所以如果这种信任关系尚未建立,那么可能不太可能说服管理员这样做。
建立信任关系后,您可能需要在Active Directory中为SQL Server注册SPN,并分配委派权限。这种类型的环境很难设置,排除故障和维护。
我希望还有其他一些方法可以做到这一点,因为这听起来好像你正走向一个非常困难的场景。
希望它有所帮助 Rihan