"无法打开用户默认数据库.登录失败." 安装SQL Server Management Studio Express后

Han*_*ood 12 database sql-server database-connection database-administration sql-server-express

我在程序使用的本地文件中有一个数据库.该程序功能有限,我需要运行一些快速查询.我安装了SQL Server Management Studio Express 2005(SSMSE),连接到SQL Server实例,附加了数据库文件,并运行了查询.现在原始程序将不再连接到数据库.我收到错误:

无法打开用户默认数据库.登录失败.用户'MyComputer\MyUserName'登录失败.

我已经回到SSMSE并尝试设置默认数据库.我打开了Security,Logins,BUILTIN\AdministratorsBUILTIN\Users.在General下,我已将默认数据库设置为程序的数据库.在User Mappings下,我确保勾选了数据库,并勾选了db_datareaderdb_datawriter.

该程序使用连接字符串:

服务器=(本地)\实例; AttachDbFilename = C:\ PathToDatabase\Database.mdf; 综合安全=真; 用户实例=真;

我知道关于数据库管理的杰克.我还缺少什么?

Mik*_*eel 14

当我将默认数据库脱机时,这个问题就出现了。接下来我知道我无法登录。切换到“连接属性”选项卡并选择下拉菜单来更改我想要连接的数据库也失败。

当我手动输入 master 作为我想要连接的数据库(在“连接属性”选项卡上)时,它立即让我进入。


Kia*_*ash 9

这可能没有具体回答您的问题,但它会帮助其他类似的问题

问题是您的用户默认为无法以任何理由访问的数据库(可以重命名,删除,损坏或...)要解决此问题,请按照以下说明操作

  1. 尝试再次登录登录页面,其他选项卡选择"连接属性".
  2. 在选项卡下找到"连接到数据库"并选择您有权访问的现有数据库,如tempdb或master
  3. 连接到SQL Server实例后,执行以下TSQL为登录分配新的默认数据库.

    Use master
    GO
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
    GO
    
    Run Code Online (Sandbox Code Playgroud)

或者,连接后,通过UI将默认数据库名称更改为master

文章摘自:http: //www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/


小智 6

首先,尝试隔离您的问题:

  1. 备份文件!显然,在某些情况下,下面的某些步骤会导致文件消失.
  2. 您确定通过Management Studio连接到同一个实例,因为该程序是?
  3. 如果可能,请尝试关闭您不希望使用的实例.
  4. 将用户的默认数据库设置为master并尝试进行程序登录.
  5. 尝试通过Management Studio以用户身份登录 - 由于您已集成了安全性,因此您应该以程序的用户身份打开Management Studio.
  6. 你在使用"用户实例" - 也许不知道它?如果是这样,这可能会有所帮助:http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx

我没有对程序执行方式附加的文件做太多工作 - 但是你写的是你也在管理工作室中附加了数据库.在运行程序之前,您是否尝试将其分离?也许您看到Management Studio和您的程序竞争独占访问MDF文件?

编辑:我在上面添加了第6点 - 这是我自己的TODO列表中的新功能,在对此类登录失败进行故障排除时.但它确实听起来很像你正在经历的.

EDIT2:在第一次编辑中,新项目已添加到列表中.因此,评论中的数字与答案中的数字不一致.


Dus*_*inA 6

我终于明白了这一点,我的情况与我今晚读到的其他人的情况不同。

我已经从备份中恢复了数据库。我知道我一直在使用一个特定的登录用户,因此我在 SSMS 中创建了该用户。但是,随备份进入的数据库下已经存在一个具有该名称的用户。

由于我花了很多精力试图解决这个问题,所以我无法轻松删除数据库下的用户。我删除了数据库并再次恢复。然后:

  1. 删除Databases->[我的数据库]->Users下的用户
  2. 在“安全”->“登录”中再次创建用户(不在数据库下,尽管这可能也有效)。
  3. 转到新创建的用户。选择属性。然后在“用户映射”下,告诉它将您的数据库设置为默认数据库。授予其读写权限。

摘要:我有两个用户。一份是数据库附带的,一份是我创建的。删除数据库附带的数据库并创建您自己的数据库。