无法连接到sql server登录失败."登录来自不受信任的域,不能与Windows身份验证一起使用"

Gav*_*ven 39 sql-server

我正在尝试托管SQL服务器数据库,但每当我尝试连接到它时,我都会收到此错误:

登录来自不受信任的域,不能与Windows身份验证一起使用

我使用以下命令通过Matlab连接:

conn = database('Clinical_Data','DoyleLab07\Acc','','com.microsoft.sqlserver.jdbc.SQLServerDriver','jdbc:sqlserver://DOYLELAB07\SQLEXPRESS:54287;database=Clinical_Data;integratedSecurity=true;').
Run Code Online (Sandbox Code Playgroud)

只要我在用于托管服务器的计算机上使用matlab,使用matlab连接数据库就可以正常工作.但是,当我使用另一台计算机和相同的Matlab命令时,我得到了上面显示的错误.

当我看控制面板\系统.我注意到我的主机PC或我用来连接主机的PC上没有列出域名,但两台计算机都在同一个工作组中.我是否可以通过创建域并将外部PC和主机添加到该域来解决我的问题?如果是这样,怎么办呢?

任何建议将非常感谢.感谢您阅读我的帖子.

小智 28

摆脱Integrated Security=true为我工作.

  • 读者 - 另请参阅 Jay 的回答以了解此标志的解释。 (4认同)
  • 对我来说,它通过删除“Trusted_Connection=True”起作用,但你的回答给了我一个提示,谢谢 (3认同)

Not*_*tMe 26

要使用Windows身份验证,必须满足以下两个条件之一:

  1. 您正在从与数据库服务器相同的计算机上执行.
  2. 您有一个Active Directory环境,并且正在执行该应用程序的用户(通常是登录用户)有权连接到该数据库.

如果这些都不是真的,你必须做以下两件事之一:

  1. 建立Windows域控制器,将所有相关计算机连接到该控制器,然后修复SQL服务器以使用域帐户; 要么,
  2. 更改SQL Server以使用Windows和SQL Server帐户.

通过FAR,最简单的方法是将SQL Server更改为使用Windows和SQL服务器帐户.然后你只需要在数据库服务器上创建一个sql server用户并更改你的连接字符串来做到这一点.

最佳案例选项1将需要一整天的安装和配置.方案2应该花费大约5分钟.

  • 显然我上面提到的问题是由参数的顺序引起的?我不认为这是一个问题,但这是我唯一改变的事情,突然它起作用了...... (3认同)
  • @Gaven:使用管理工作室。右键单击服务器名称。转到属性。单击安全性选项卡。将“服务器身份验证”更改为“ SQL Server和Windows身份验证模式”。您可能必须重新启动SQL服务。完成后,连接到数据库服务器,扩展安全性并添加一个帐户。参见http://stackoverflow.com/questions/1393654/how-to-change-from-sql-server-windows-mode-to-mixed-modesql-server-2008 (2认同)

Jay*_*Jay 13

如果您的SQL Server在一个域控制器上,并且您尝试从另一个域控制器连接到它,那么您将在以后遇到此错误

IntegratedSecurity = true;
Run Code Online (Sandbox Code Playgroud)

即使您在连接字符串中包含有效的SQL Server用户名和密码,也会发生这种情况,因为它们将自动覆盖您的Windows登录名和密码.集成安全性意味着 - 使用Windows凭据对SQL Server进行登录验证.因此,如果您登录到其他域控制器,那么它将失败.如果您在两个不同的域控制器上,那么您别无选择,只能使用

IntegratedSecurity = false;
Run Code Online (Sandbox Code Playgroud)

现在,当集成安全性为假时,SQL Server将使用连接字符串中提供的SQL Server登录名和密码.为此,SQL Server实例必须将其身份验证模式配置为混合模式,即SQL Server和Windows身份验证模式.

若要在SQL Server中验证或更改此设置,可以打开SQL Server Management Studio并右键单击服务器名称,然后选择"属性".在出现的弹出窗口中选择安全性,如果需要,您将看到更改此设置的位置.


小智 9

我在连接到 SQL Always On Listener 时遇到了这个问题。禁用环回检查解决了该问题。

\n\n
    \n
  1. 使用 regedit 编辑注册表。(开始 \xe2\x80\x93> 运行 > Regedit )

  2. \n
  3. 导航:HKLM\\System\\CurrentControlSet\\Control\\LSA

  4. \n
  5. 添加一个DWORD名为\xe2\x80\x9cDisableLoopbackCheck\xe2\x80\x9d

  6. \n
  7. 将此值设置为1

  8. \n
\n\n

https://blog.sqlauthority.com/2017/04/18/sql-server-login-failed-login-untrusted-domain-cannot-used-windows-authentication/

\n


Dyl*_*tie 8

使用DNS别名和托管文件连接到使用不同域名的计算机时,我遇到了同样的问题.

假设您有一个名为sql1on 的SQL服务器mydomain.com- 这是一个Active Directory域 - 并且您还有一个用于mydomain.net的DNS区域,并且 - 为了保持一致性 - 您设置了一个DNS别名(CNAME)记录database.mydomain.net --> sql1.mydomain.com

您将能够连接到sql1.mydomain.com使用Windows集成安全性,但database.mydomain.net 即使它是相同的服务器也无法连接,因为域名与您的AD域不匹配.


Mig*_*res 6

正如这里提到的,您可能需要禁用环回

\n\n

可以通过添加注册表项来删除环回检查,如下所示:

\n\n
    \n
  • 使用 regedit 编辑注册表。(开始 \xe2\x80\x93> 运行 > Regedit )
  • \n
  • 导航至:HKLM\\System\\CurrentControlSet\\Control\\LSA
  • \n
  • 添加名为 \xe2\x80\x9cDisableLoopbackCheck\xe2\x80\x9d 的 DWORD 值将此值设置为 1
  • \n
\n


GWL*_*osa 5

如果您用于访问SQL Server的帐户被域锁定,也可能会出现此错误消息。


小智 5

如果您使用 Windows 身份验证,请确保用户的密码尚未过期。密码过期可以解释此错误。这就是我的情况的问题。


CRA*_*DBA 4

为什么不使用 SQL Server 帐户并同时传递用户名和密码?

原因如下。

简而言之,您似乎遇到了身份验证问题。

工作组的问题是没有像 Active Directory (AD) 这样的通用访问控制列表。如果您使用 ODBC 或 JDBC,则会传递错误的凭据。

即使您在安装了 SQL Express (SE\LWA) 的计算机 (SE) 上创建本地 Windows 帐户 (LWA),从客户端计算机 (CM) 传递的凭据也将是 CM\LWA。