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

C# .net 专栏收录该内容
78 篇文章 0 订阅
 

转自:http://hi.baidu.com/lijiping/blog/item/e70bef24d9206e054c088d9e.html

今天早上一到公司用“企业管理器”或“查询分析器”连接本地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:以后要记得用备份数据库复制给他人了。


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值