SQL2008的数据库 只有用户 sa,其他用户都被删除 删除了一个数据库AAA后,结果发现无法登陆数据库显示为  无法打开用户默认数据库,登陆失败
     用户sa登陆失败, 错误:4064

解决方案 »

  1.   

    sp_defaultdb
    更改登录的默认数据库。语法
    sp_defaultdb [ @loginame = ] 'login' ,
        [ @defdb = ] 'database'参数
    [@loginame =] 'login'是登录名。login 的数据类型为 sysname,没有默认值。login 可以是现有 Microsoft® SQL Server™ 登录或者是 Microsoft Windows NT® 用户或组。如果 SQL Server 上没有 Windows NT 用户或组,系统会自动添加。[@defdb =] 'database'新的默认数据库的名称。database 的数据类型为sysname,没有默认值。database 必须已经存在。返回代码值
    0(成功)或 1(失败)注释
    当客户端连接 SQL Server 时,如果没有显式使用 USE 语句,则为其登录定义的默认数据库将成为当前数据库。可以在 sp_addlogin 添加登录时定义默认数据库。当执行 sp_addlogin 时,如果没有指定数据库,则 master 数据库将成为默认数据库。执行 sp_defaultdb 后,当用户下次登录时登录将连接到新数据库。但 sp_defaultdb 不能自动将数据库访问权授予登录。数据库所有者 (dbo) 必须通过 sp_grantdbaccess 将数据库访问权授予登录,或者该登录必须是一个在数据库中指定的 guest 用户。推荐使用 sp_defaultdb 更改所有登录(而不是 sysadmin 固定数据库角色成员)的默认数据库。这将防止用户不经意间使用或创建 master 数据库中的对象。在用户定义的事务中不能执行 sp_defaultdb。权限
    执行权限默认授予 public 角色,以便用户更改他们自己登录的默认数据库。只有 syadmin 或 securityadmin 固定服务器角色的成员可以为其它登录执行 sp_defaultdb。示例
    下面的示例将 pubs 设置为用户 Victoria 的默认数据库。EXEC sp_defaultdb 'Victoria', 'pubs'
      

  2.   

    是不是删错了数据库呢? 用windows身份登可以吗,把帐号检查下看是什么问题!系统默认数据库是不是存在 
      

  3.   

    我的windows身份已经被删除,怎么办啊
      

  4.   

    应该是Default数据库被删除了,用WINDOWS登陆修改Default数据库就可以登陆了。用-m单用户启动实例,可以用WINDOWS管理员连接