如图:
最近公司停电,也设置过 DNS ,访问内测网页时常常出现上图的错误!~
开始以为 web 服务器的问题,进去查看DNS ,发现DNS 改为网关的 IP ! ,改回来后还是不行。
(数据库服务启动账户为:network service)
从错误看:目标主体名称不正确,无法生成 SSPI 上下文。
可能原因是:
1. 正在使用集成安全性。
2. 使用 Kerberos 执行安全委派。
3. SqlServer 服务启动账户不是 Local System 。
解决方法:
在同一个域中的任意一台计算机打开命令行。
执行查看要连接的数据库的 spn,执行 :SETSPN -L DBServerName
(注意:不是 SETSPN -L Domain\administrato ,这个是查看域管理员账号的spn)
上面看到如下:
Registered ServicePrincipalNames 用于 CN=DBServerName,CN=Computers,DC=Domain,DC=com:
MSSQLSvc/DBServerName.Domain.com:1433
MSSQLSvc/DBServerName.Domain.com
HOST/DBServerName.Domain.com
HOST/DBServerName
发现少了一个 spn : MSSQLSvc/DBServerName:1433
现在将该 spn 注册到域中,执行: SETSPN -A MSSQLSvc/DBServerName:1433 DBServerName
再查看spn,发现已经添加,过10几秒后,刷新网页访问正常!~
参考:
如何排查“Cannot generate SSPI context”(无法生成 SSPI 上下文)错误消息
That “Cannot Generate SSPI Context” headache
‘Cannot Generate SSPI Context’ and Service Account Passwords
客户端连接SQL报"Cannot Generate SSPI Context"错误