您的位置:首页 > 其它

基于令牌的服务器访问验证失败

2014-01-27 15:33 369 查看
2014/01/24重启了数据库服务器,之后在SQL Server日志里就一直出现

消息
Login failed for user 'DOMAIN\WinLogin'. 原因: 基于令牌的服务器访问验证失败,出现基础结构错误。请检查以前的错误。 [客户端: local machine]
这样的错误。

这都是在重启之后才出现的,才想起来在重启之前的曾经修改过所有跟SQL SERVER相关的服务的账号,都修改了为'DOMAIN\WinLogin' 。但是在”安全性”—>”登录名”中没找到'DOMAIN\WinLogin'。

手动创建一个?

USE[master]
GO
CREATELOGIN[DOMAIN\WinLogin]WITHPASSWORD=N'abc123456'MUST_CHANGE,DEFAULT_DATABASE=[master],CHECK_EXPIRATION=ON,CHECK_POLICY=ON
GO
EXECmaster..sp_addsrvrolemember@loginame=N'DOMAIN\WinLogin',@rolename= N'sysadmin'
GO
悲催的
消息15006,级别16,状态1,第1 行
'DOMAIN\WinLogin' 是无效名称,因为其中包含无效字符。
解决:

原来windows用户不能创建为SQL SERVER身份验证,就改为了Windows身份验证。

至此,”基于令牌的服务器访问验证失败”已经没有出现,但是,出现了另外的错误:

消息
Login failedfor user 'DOMAIN\WinLogin'. 原因: 无法打开明确指定的数据库。 [客户端: <local machine>]
已经给了'DOMAIN\WinLogin'这个账号赋予了sysadmin的权限,怎么还会有”无法打开明确指定的数据库”?难道要访问不存在的数据库?(后来证明这个想法是对的!我勒个擦!)

用SQLProfile跟踪,跟踪不出来,应该是只能够跟踪已经执行的记录,而不能正常连接的记录又怎么可能记录下来呢?

自己能用的办法都用尽了, 只好再一次求助于万能的Google了。皇天不负有心人,终于让我找到了:http://www.fanzehua.com/blog/84.html 真的是同病相邻啊!

原来是开了Reportservice服务,这个服务需要访问Reportserver这个数据库,而这台服务器上没有安装这个数据库,所以就”无法打开明确指定的数据库了”。停止了这个服务之后,SQL SERVER日志里就没有出现异常的记录了。

问题虽然解决了,但是我还是有点问题没想明白:

1、 Reportservice的服务是设置为自动启动的,那么以前的账号访问的时候为什么就没有报错呢?

2、 在什么情况下,使用了域账号作为服务的启动访问账号,会自动创建对应的数据库登录账号?必须要手动创建吗?

吐糟: 被这样一件小事情折腾两天,真心想抽自己两巴掌。

附:老大提供的跟踪SQL SERVER 18456错误的方法:
http://www.eraofdata.com/sql-18456-login-failures/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐