新建sql注册提示无法打开用户默认数据库 登录失败,怎么解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新建sql注册提示无法打开用户默认数据库 登录失败,怎么解决相关的知识,希望对你有一定的参考价值。
新建sql注册提示无法打开用户默认数据库 登录失败,怎么回事
不是本机,是远程,现在用的就是sql验证,但是不行
不行的话可能要重装一下SQL的连接工具
“无法打开用户默认数据库。登录失败。”安装 SQL Server Management Studio Express 后
【中文标题】“无法打开用户默认数据库。登录失败。”安装 SQL Server Management Studio Express 后【英文标题】:"Cannot open user default database. Login failed." after installing SQL Server Management Studio Express 【发布时间】:2012-01-21 15:52:05 【问题描述】:我在一个程序使用的本地文件中有一个数据库。该程序功能有限,我需要运行一些快速查询。我安装了 SQL Server Management Studio Express 2005 (SSMSE),连接到 SQL Server 实例,附加数据库文件并运行查询。现在原程序将不再连接到数据库。我收到错误:
无法打开用户默认数据库。登录失败。用户“MyComputer\MyUserName”登录失败。
我已经回到 SSMSE 并尝试设置默认数据库。我已经打开了 Security、Logins、BUILTIN\Administrators 和 BUILTIN\Users。在General下,我已将默认数据库设置为程序的数据库。在 User Mappings 下,我确保勾选了数据库并且勾选了 db_datareader 和 db_datawriter。
程序使用连接字符串:
服务器=(本地)\实例; AttachDbFilename=C:\PathToDatabase\Database.mdf;综合安全=真;用户实例=真;
我对数据库管理了如指掌。我还缺少什么?
【问题讨论】:
【参考方案1】:这可能不是专门回答您的问题,但它可能会帮助其他人因不同问题引起的类似问题
在我的情况下,问题是我的用户被默认为一个由于任何原因无法访问的数据库(可以重命名、删除、损坏或...) 要解决此问题,请按照以下说明进行操作
在登录页面上尝试再次登录还有其他选项卡选择 “连接属性”。
在选项卡下找到“连接到数据库”并选择您有权访问的现有数据库,例如 tempdb 或 master
连接到 SQL Server 实例后,执行以下 TSQL 为登录分配一个新的默认数据库。
Use master
GO
ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB
GO
或者,一旦您连接,通过 UI 将默认数据库名称更改为 master
文章取自: http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/
【讨论】:
感谢 kiarash,我也在:blog.sqlauthority.com/2008/11/04/… 找到了这个答案【参考方案2】:首先,尝试隔离您的问题:
-
备份文件!显然,在某些情况下,以下某些步骤可能会导致文件消失。
您确定通过 Management Studio 连接到与程序相同的实例吗?
如果可能,请尝试关闭您不希望使用的实例。
将用户的默认数据库设置为master并尝试使程序登录。
尝试通过 Management Studio 以用户身份登录 - 由于您已集成安全性,因此应以程序用户身份打开 Management Studio。
您是否在使用“用户实例”- 可能不知道?如果是这样,这可能会有所帮助:http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx
我没有对以您的程序方式附加的文件进行太多工作 - 但您写道,您也在 Management Studio 中附加了数据库。在运行程序之前,您是否尝试过将其分离?也许您看到 Management Studio 和您的程序竞争对 MDF 文件的独占访问权?
编辑:我在上面添加了第 6 点 - 这是在对此类登录失败进行故障排除时,我自己的 TODO 列表中的新内容。但这听起来确实很像您正在经历的。
EDIT2:在第一次编辑中,新项目被添加到列表中。所以 cmets 中的数字与答案中的数字不对应。
【讨论】:
所有用户现在都将默认数据库设置为“master”。使用 SSMSE,我使用集成安全性毫无问题地连接到“(本地)\Instance”,与程序完全相同。该程序仍然给出相同的错误消息。我什至专门为我创建了一个登录名,但仍然没有爱。 我尝试在 SSMSE 中分离数据库。原来“Detatch”是“Delete”的同义词,我的数据库消失在二进制以太中!谢天谢地,我有一个当前的备份。此外,备份没有被 SSMSE“损坏”,并且可以与应用程序一起使用。 第 5 点描述并解决了我未来的问题。非常感谢你的帮助!很遗憾我不能为此给你奖金。 哎哟。很高兴第 5 点有所帮助 - 很遗憾听到分离实际上杀死了文件。稍后会更新答案。 未来读者请注意:第 5 点已更改为第 6 点。“用户实例”是问题的根源。【参考方案3】:当我将默认数据库脱机时,这个问题就出现了。接下来我知道我无法登录。切换到“连接属性”选项卡并选择下拉菜单以更改我要连接的数据库也失败了。
一旦我手动输入 master 作为我想要连接的数据库(在“连接属性”选项卡上),它就会立即让我进入。
【讨论】:
【参考方案4】:我终于明白了这一点,我的情况与我今晚读到的其他人都不同。
我已经从备份中恢复了我的数据库。我知道我一直在使用一个特定的登录用户,所以我在 SSMS 中创建了该用户。但是,备份中的数据库下已经有一个同名的用户。
由于我费尽心思试图解决这个问题,我无法轻松删除数据库下的用户。我删除了数据库并再次恢复。那么:
-
删除数据库下的用户->[我的数据库]->用户
在 Security->Logins 中再次创建用户(不在您的 DB 下,尽管这可能也可以。
转到新创建的用户。选择属性。然后在用户映射下,告诉它使您的数据库成为默认值。授予它读写权限。
总结:我有两个用户。一个是数据库附带的,一个是我创建的。删除数据库附带的那个并创建自己的。
【讨论】:
【参考方案5】:首先点击“连接服务器”提示的选项>>按钮。
现在将连接数据库更改为服务器上的任何现有数据库,例如 master 或 msdb。
更多详情
https://blog.sqlauthority.com/2008/11/04/sql-server-fix-error-4064-cannot-open-user-default-database-login-failed-login-failed-for-user/
【讨论】:
【参考方案6】:我也遇到过同样的问题,原来我试图访问内置的成员资格类(在视图中),而 .Net 试图在 App_Data 文件夹中创建数据库:
@Membership.GetUser().ProviderUserKey
这将触发系统尝试创建基于内置会员系统的数据库,这可能不是您系统的设置方式。
【讨论】:
【参考方案7】:我遇到了类似的问题,我只需要下载能够启动用户实例的 SQL Express 实用程序。 SSEUtil 是由 Visual Studio 团队编写的用于帮助解决用户实例问题的工具,您可以在随实用程序一起安装的自述文件中阅读有关它的更多信息。 http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en.
希望这会有所帮助。
【讨论】:
【参考方案8】:就我而言,我必须设置“连接到任何数据库”的正确路径:
在您的实例上,转到 Security
,然后转到 Logins
。
右击那里,你会看到properties
,你应该点击Securables
。
它可以连接到任何数据库。
【讨论】:
以上是关于新建sql注册提示无法打开用户默认数据库 登录失败,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章
无法打开用户默认数据库。登陆失败。 用户SA登陆失败(SQL 错误4064) 怎么解决啊
我用sql server 2008 management studio 连接 sql server 2005, 提示4064错误,请问如何解决?