在建立与集成安全性的连接时,SSPI握手失败,错误代码为0x8009030c

问题描述 投票:12回答:5

尝试使用JDBC连接连接到SQL Server 2005时出现以下错误。

 Error: 17806, Severity: 20, State: 2.
 Logon       SSPI handshake failed with error code 0x8009030c while establishing 
             a connection with integrated security; the connection has been 
             closed. [CLIENT: 127.0.0.1]
 Logon       Error: 18452, Severity: 14, State: 1.
 Logon       Login failed for user ''. The user is not associated with a trusted 
             SQL Server connection. [CLIENT: 127.0.0.1]

我的连接网址:

jdbc:sqlserver://LOCALHOST:1433;DatabaseName=master;integratedSecurity=true
sql-server sql-server-2005
5个回答
17
投票

至少对我来说,这个问题的关键是与SQL Server的连接是通过环回接口(127.0.0.1)进行的。我有相同的症状,并在this blog post找到了答案。

总结一下:发生了一次环回检查,导致通过环回适配器的可信连接失败。可以通过添加注册表项来删除此检查,如下所示:

  1. 使用regedit编辑注册表。 (开始 - >运行... Regedit)
  2. 浏览到:HKLM \ System \ CurrentControlSet \ Control \ LSA
  3. 添加名为“DisableLoopbackCheck”的DWORD值
  4. 将此值设置为1

我做了这个改动后重新启动,但是你可能会发现这没有必要。在此注册表更改生效后,我可以通过环回适配器建立可信连接。

感谢Blackhawk Consulting Blog指出我在这个问题上的正确方向。


6
投票

我也有这个问题,原因很简单:我的域用户的密码已过期,因此凭据已被撤销。

事实上,我还打开了SQL Management Studio,所以每隔2-3分钟就会产生这样的错误,直到我更改了域密码。


0
投票

与此0x8009030c代码有相同的确切消息。

在我的情况下,用户无法从网络访问sql计算机,我有一个失败的审核消息,表明(我认为在其他情况下也会发生相同的消息)。

转至:本地安全策略 - >安全设置 - >本地策略 - >用户权限分配 - >从网络访问此计算机 - >添加用户

它解决了这个问题


0
投票

使用Microsoft的err.exe

C:\>err 0x8009030c
# for hex 0x8009030c / decimal -2146893044 :
  SEC_E_LOGON_DENIED                                            winerror.h
# The logon attempt failed
# 1 matches found for "0x8009030c"

DC会因许多不同原因拒绝登录,包括DC的间歇性连接故障。


0
投票

另一个原因可能是帐户被锁定。我们有这个是由于一个流氓服务每隔半小时用错误的密码运行。该帐户是一个服务帐户,并设置为在发生这种情况几分钟后自行解锁,因此很难追踪。

© www.soinside.com 2019 - 2024. All rights reserved.