神奇的“用户 'sa' 登录失败”,期待高人解释。

风声3 2011-05-21 09:42:11
网上搜索几天了,没有对应的解法,问题似乎很简单:

通过备份文件在本地恢复了一个数据库(以下称外来数据库),在本机调试程序总出错:
无法打开登录所请求的数据库 "××××"。登录失败。
用户 'sa' 登录失败。


暂时没有在网上找到有效的各种解决方案,神奇的地方是:

1、将数据库连接中数据库名更换为本机创建的数据库,可以访问。
  这应该可以说明数据库连接没问题,sa密码没问题,数据库服务器也没问题;

2、SQL Server Management Studio/查询分析器均能通过sa正常访问。

3、我开始怀疑备份文件是不是IO错误:
  1)于是下载一个更早日期的备份恢复为数据库 B,程序成功访问数据库 B(代码无任何修改);
  2)我以为问题解决,正在抱怨谁提供的备份数据库,害我折腾老半天;
  3)接下来,我又下载一个晚一点日期的备份恢复为数据库 C,仍旧发现“用户'sa'登录失败”;
  4)我决定不求所以然了,切换(仅修改程序连接字符串)回数据库 B 去做我无聊的调试去,天杀的数据库 B 发脾气了:“用户'sa'登录失败”。
  外来的数据库伤不起啊……我开始为刚才草率的抱怨羞愧不已……

综上几点,我开始研究这些外来的数据库和我本机原生的数据库有什么异同,发现:

1、外来数据库“安全性-用户”里含有更多的用户,先不管什么根据,删掉;
2、其中一个居然删除失败,提示架构中含有主体;
3、仔细对比之下修改架构和本机原生数据库完全相同,成功删除那个用户;
4、发现原生数据库“安全性-用户”里面的“dbo”用户名为:dbo 登录名为:计算机名\Administrator
5、发现外来数据库“安全性-用户”里面的“dbo”用户名为:dbo 登录名为:sa(无法修改)
6、发现数据库服务器“安全性-用户”里面“sa”用户映射里原生数据库没有打勾
7、发现数据库服务器“安全性-用户”里面“sa”用户映射里外来数据库打勾了(无法删除)

事实证明,以上研究纯粹是乱投医,数据库B坚定的告诉我:“用户'sa'登录失败”。

...全文
157 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
兴导 2011-10-20
  • 打赏
  • 举报
回复
兄弟,我想问问你最后怎么解决的啊?我也碰到同样的问题了,谢谢
唐诗三百首 2011-05-21
  • 打赏
  • 举报
回复
楼主的问题解决了吗?分享一下处理方法啊.
风声3 2011-05-21
  • 打赏
  • 举报
回复
通过楼上测试发现不存在的对象,羞愧,字符编码导致数据库名不正确。
感谢大家的帮助。
唐诗三百首 2011-05-21
  • 打赏
  • 举报
回复
楼主确认备份/恢复用的SQL Server版本一致吗?
依以下语句检查一下Login的SID是否相同.

select loginname,sid from master.dbo.syslogins where loginname='sa'
select name,sid from [外来数据库名].dbo.sysusers where name='dbo'

正常结果是
loginname sid
----------------------
sa 0x01

(1 row(s) affected)

name sid
-----------------------
dbo 0x01

(1 row(s) affected)

风声3 2011-05-21
  • 打赏
  • 举报
回复
通过“还原数据库”向导恢复的数据库
快溜 2011-05-21
  • 打赏
  • 举报
回复
你数据库怎么做的恢复?
风声3 2011-05-21
  • 打赏
  • 举报
回复
检查了一下撒登录是“启用”状态。我觉得不应该是数据库服务器上面的问题,否则sa应该也不能登录其它数据库,否则查询分析器也不能通过sa登录
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fonshen 的回复:]
用户认证方式是混合认证。现在:
其它数据可以通过sa访问
B数据可以用SQLserver认证方式在查询分析器中使用。

至于修改sa账户,启用登录,我不知道在哪操作……
[/Quote]

进入企业管理器,再找到安全(security),下面的登录(Logins)下面就有sa,在sa上点右键就可以修改了.
前提你要有权限.也可以用SQL语句进行修改
风声3 2011-05-21
  • 打赏
  • 举报
回复
用户认证方式是混合认证。现在:
其它数据可以通过sa访问
B数据可以用SQLserver认证方式在查询分析器中使用。

至于修改sa账户,启用登录,我不知道在哪操作……
  • 打赏
  • 举报
回复
1、数据库服务器的用户认证方式
2、2005的话,除了修改为混合认证之外,还要修改sa的账户,启用登陆

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧