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

时间:2009-10-08 14:05:49

标签: sql-server sql-server-2005

尝试使用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

5 个答案:

答案 0 :(得分:17)

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

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

  1. 使用regedit编辑注册表。 (开始 - >运行...... Regedit)
  2. 浏览至:HKLM \ System \ CurrentControlSet \ Control \ LSA
  3. 添加名为“DisableLoopbackCheck”的
  4. 将此值设为1
  5. 我做了这个改动后重新启动,但是你可能会发现这没有必要。在此注册表更改生效后,我可以通过环回适配器建立可信连接。

    Blackhawk Consulting Blog致敬,指出我在这个问题上的正确方向。

答案 1 :(得分:6)

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

实际上,我还打开了SQL Management Studio,因此每隔2-3分钟就会产生一次错误,直到我更改了域密码。

答案 2 :(得分:0)

与此0x8009030c代码有完全相同的消息。

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

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

解决了问题

答案 3 :(得分: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的间歇性连接故障。

答案 4 :(得分:0)

另一个原因可能是帐户被锁定。我们之所以遇到这种情况,是因为每半小时使用错误的密码运行流氓服务。该帐户是服务帐户,并且设置为在几分钟后会自动解锁,因此很难跟踪。