64

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

登录来自不受信任的域,不能用于 Windows 身份验证

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

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

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

当我在控制面板\系统下查看时。我注意到我的主机 PC 或我用来连接主机的 PC 上没有列出域,但两台计算机都在同一个工作组中。我可以通过创建域并将外国 PC 和主机添加到该域来解决我的问题吗?如果是这样,如何实现?

任何建议将不胜感激。感谢您阅读我的帖子。

4

25 回答 25

45

摆脱Integrated Security=true对我有用。

于 2014-08-27T18:02:40.330 回答
38

为了使用 Windows 身份验证,需要满足以下两件事之一:

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

如果这些都不正确,您必须做以下两件事之一:

  1. 建立 Windows 域控制器,将所有相关机器连接到该控制器,然后修复 SQL 服务器以使用域帐户;或者,
  2. 将 SQL Server 更改为同时使用 Windows 和 SQL Server 帐户。

到目前为止,最简单的方法是将 SQL Server 更改为同时使用 Windows 和 SQL Server 帐户。然后您只需要在数据库服务器上创建一个 sql server 用户并更改您的连接字符串即可。

最佳案例选项 1 将需要一整天的安装和配置。选项 2 大约需要 5 分钟。

于 2013-09-04T01:40:31.380 回答
28

如果您的 SQL Server 在一个域控制器上,并且您尝试从另一个域控制器连接到它,那么当

IntegratedSecurity = true;

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

IntegratedSecurity = false;

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

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

于 2016-07-28T19:10:19.043 回答
11

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

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

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

于 2015-05-27T19:51:09.177 回答
7

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

于 2015-04-06T16:58:41.907 回答
5
于 2019-11-20T07:12:42.417 回答
4

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

这就是原因。

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

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

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

于 2013-09-04T01:17:23.493 回答
4

如此处所述,您可能需要禁用环回

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

  • 使用 regedit 编辑注册表。(开始 -> 运行 > 注册表编辑器)
  • 导航到:HKLM\System\CurrentControlSet\Control\LSA
  • 添加一个名为“DisableLoopbackCheck”的 DWORD 值 将此值设置为 1
于 2019-02-13T15:48:45.007 回答
4

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

于 2019-04-09T09:19:46.023 回答
1

在我的情况下,SQL Native Client 11.0 配置中的别名指向无效的服务器/IP。一旦更新它就可以正常工作。

要检查: 1. 启动“SQL Server 配置管理器” 2. 导航到“SQL Native Client 11.0 配置”,然后选择“别名” 3. 确保 TCP/IP 的“别名”和“服务器”正确匹配

于 2016-10-18T12:24:21.857 回答
1

只需添加我的解决方案建议,我就有一个用于开发和测试的 VM 服务器的副本,我在其上创建了数据库,其中“sa”拥有数据库的所有权。

然后,我将数据库恢复到实时 VM 服务器上,但即使数据仍然正确返回,我也遇到了同样的错误。我查看了“sa”用户映射,当我尝试应用映射时,可以看到它没有映射到数据库我收到另一个错误“修复:无法使用特殊主体 'sa'。Microsoft SQL Server,错误: 15405"。所以我改为运行这个

将 DATABASE::dbname 上的授权更改为 sa

我重新检查了用户映射,现在它已分配给我的数据库,它为我解决了很多访问问题。

于 2019-03-04T15:22:15.240 回答
1

以下工作帮助我使用 Windows 身份验证从另一台机器访问 SQL Server。这种方法可能仅在开发/测试环境中有用。例如,一旦您在工作机器上更改密码,您就需要手动更新密码。

在装有 SQL Server 的机器上,转到控制面板并使用与您的工作机器上相同的用户名和密码添加新的 Windows 用户。然后为该用户创建 SQL Server 登录:

CREATE LOGIN [SQLSERVERHOST\myuser] FROM WINDOWS;

现在您可以使用此登录名进行 Windows 身份验证。

如果您收到错误“登录来自不受信任的域”,这可能意味着您更改了工作机器上的密码,现在需要更新 SQL Server 机器上的密码。

于 2018-11-30T09:51:15.487 回答
0

我在连接属性中启用了信任服务器证书,它对我有用

连接属性

于 2021-01-19T13:30:23.543 回答
0

还有一件事要检查:

在另一位开发人员远程进入 QA 服务器并尝试在中午开始恢复工作后,我们的夜间 QA 恢复工作突然停止工作,随后由于“不受信任的域”而失败信息。不知何故,指向作业的维护计划的服务器(更改了?)使用了 IP 地址,而不是本地机器的名称。用机器名称替换后,问题就解决了。

于 2019-09-23T14:24:57.633 回答
0

在 .net Core 中,如果 Trusted_Connection=True; 也可能出现此错误;已设置。appsettings.jason 中的示例设置

ConnectionStrings": {
"DefaultConnection": "Server=serverName; Database=DbName; uid=userId; pwd=password; MultipleActiveResultSets=true"

},

于 2020-11-11T05:47:32.437 回答
0

事实证明,我们的开发数据库服务器最近获得了自签名证书,因此它现在自动不受信任。这导致了上面提到的登录错误。我添加TrustServerCertificate=True到我的连接字符串中,它现在可以工作了。

于 2022-02-22T22:46:36.763 回答
0

加入 WORKGROUP 然后重新加入域为我解决了这个问题。

使用 Virtual Box VM 时出现此错误。当我将 VM 文件移动到新的驱动器位置或计算机时,问题开始发生。

希望这对VM人员有所帮助。

于 2021-02-25T15:52:28.813 回答
0

i removed Integrated Security=true and Trusted_Connection=True both of them , worked for me..

于 2022-02-15T09:07:13.527 回答
0

TLDR:将 DNS 服务器更改为环回地址对我有用。

我在 VirtualBox 中工作并设置了两个 Windows Server 2016 实例。服务器 A 配置为域控制器,服务器 B 配置为 SQL Server。将服务器 B 添加到域后,我无法从服务器 A 使用 Management Studio 冷连接。我收到“登录来自不受信任的域,不能用于 Windows 身份验证”。

我的初始配置让服务器从 VirtualBox DHCP 服务器获取其 IP。

我将其更改为使用静态 IP 并在主 DNS 中输入 127.0.0.1 地址,这对我有用。

希望这可以帮助路过的人。

于 2021-01-02T18:09:57.260 回答
0

我遇到了这个问题,因为我们使用旧服务器的 DNS 名称,连接到新服务器。使用 newserver\inst1 地址,工作。newserver\inst1 和 oldserver\inst1 都指向同一个 IP。

于 2019-07-16T11:48:03.757 回答
0

当我尝试使用“Windows 身份验证”登录 SSMS 时,我开始收到此错误。这在我重命名 Windows SQL 服务器后开始发生。我尝试了一切来解决此错误,在我的特殊情况下,更改“主机”文件中的机器名称以反映名称 SQL 服务器名称更改解决了该问题。C:\Windows\System32\Drivers\etc\hosts

于 2019-06-19T11:28:15.067 回答
0

We now use a privileged account management solution that changes our passwords regularly. I ended up receiving this error after my password was changed. Closing and re-opening SSMS with the new password resolved my issue.

于 2019-05-31T13:34:53.140 回答
0

您可能会发现您有多个连接字符串,而您忘记将另一个从 Integrated Security 更改为 false。它发生在我身上。这个答案可能会对某人有所帮助。

我专注于网络配置和访问权限,经过长时间的忙碌,我记得我的一个电子邮件类中有另一个连接字符串,我不得不更改类上的连接字符串以使用网络配置之一。

于 2022-01-21T10:21:42.050 回答
-1

如果您在同一个域上有两台服务器(例如 APP 和 DB),您还可以通过在两台匹配的机器上设置本地用户(相同的用户名和密码)来在应用程序和 MSSQL 之间使用 Windows 身份验证。如果您没有匹配的密码,它可能会引发此错误。

于 2020-05-20T11:33:27.040 回答
-2

以下为我工作。希望这对你有帮助

<add name="getconn" connectionString="Data Source=servername;Initial Catalog=DBName;Persist Security Info=True;User ID=sa;Password=***" />
于 2018-12-28T15:39:15.957 回答