Sql Server 2000 无法打开用户默认数据库。登录失败

今天早上一到公司用“企业管理器”或“查询分析器”连接本地SQL Server时出现此问题:

无法连接到服务器X.X:
服务器: 消息 4064,级别 16,状态 1
[Microsoft][ODBC SQL Server Driver][SQL Server]无法打开用户默认数据库。登录失败。


回想起来,昨天下班之前,同事从我机器上复制了一个数据库文件,我习惯用分离数据库后


再复制给别人,于是昨天就忘了附加回去,今天一来就出错了


原来的SQL Server 注册是用windows身份验证的,但是windows用户的默认数据库被我删除了


于是便进不了数据库,不知道怎么解决,只有Google,Baidu了,结果有用的如下:

 

--------------------我是分割线------------------


回复人:zjcxc(邹建)  五星(高级)  信誉:492      2005-2-4 8:44:15  得分:100

错误提示已经很清楚了,不能连接到发布服务器 X.X,失败的原因是登录用户的默认数据库已经被删除
解决的办法是修改该用户的默认数据库为一个已经存在的数据库:
企业管理器--安全性--用户--右键登录失败的用户--属性--修改默认数据库
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
coos:刚开始这一段我没怎么看明白,我连SQL Server注册都进不去了,怎么看的到安全性。。。

如果你不清楚是由那个用户引起的,则可以在查询分析器中,用sa登录 X.X ,然后执行下面的语句来解决此问题

 

declare @s nvarchar(1000)
declare tb cursor local
for
select N'sp_defaultdb N'+quotename(loginname,N'''')+',N''master'''
from master.dbo.syslogins a
where not exists(
select * from master.dbo.sysdatabases where name=a.dbname)
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb


 

--------------------我是分割线-------------------

 

后来想想只要用不同默认数据库的用户登录就可以了,*^_^*


编辑SQL Server 注册,改为SQL Server身份验证,用sa登录就可以了


还好sa的默认数据库不是被我分离的那个数据库,要不然要重装SQL Server了。


ps:以后要记得用备份数据库复制给他人了。

posted @ 2005-11-22 10:53  CooS  阅读(8101)  评论(2编辑  收藏  举报