您连接到 SQL Server 的实例时出现错误消息:"无法打开用户默认数据库"

文章翻译 文章翻译
文章编号: 307864 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

每个用户都有默认数据库。当您连接到运行 Microsoft SQL Server,计算机并不指定登录数据库时,将使用的默认数据库。但是,如果在连接时的缺省数据库不可用,您可能无法连接。相反,您会收到错误消息 4062 或错误消息 4064。错误消息的文本如下所示:
无法打开用户默认数据库

原因

在连接时用户默认的数据库不可用。它是可能的数据库:
  • 处于可疑模式。
  • 不再存在。
  • 在单用户模式,只是已被其他人或其它原因使用可用的连接。
  • 已分离。
  • 已设置为 RESTRICTED_USER 状态。
  • 处于脱机状态。
  • 被设置为紧急状态。
  • 不具有登录帐户映射到的用户或用户访问被拒绝。
  • 是数据库镜像的一部分。
此外,登录帐户可能是多个组的成员,其中一个组的默认数据库不可用时的连接。

替代方法

若要变通解决此问题,请在连接字符串中指定有效、 可用的数据库。若要避免该错误,在用户的默认数据库不可用时,可以修改登录的用户的用户身份登录。然后更改到当前可用于连接数据库的用户的默认数据库。

SQL Server 2005 及更高版本

可以使用 sqlcmd 实用程序来更改默认 SQL Server 2005 中的数据库。若要执行此操作,请执行以下步骤:
  1. 单击开始,然后单击运行,类型 cmd然后按 enter 键。
  2. 使用以下方法之一,具体取决于使用的 SQL Server 登录的身份验证类型:
    • 如果 SQL Server 登录使用 Microsoft Windows 身份验证连接到实例,在命令提示符下键入以下命令,然后按 enter 键:
      sqlcmd – E-S 实例名称 – d 母版
    • 如果 SQL Server 登录使用 SQL Server 身份验证连接到实例,在命令提示符下键入以下命令,然后按 enter 键:
      sqlcmd-S 实例名称 -d 的母版-U SQLLogin -P 密码
    注意 实例名称 是一个占位符,用于连接到 SQL Server 2005 实例的名称。 SQLLogin 是 SQL Server 登录名的默认数据库已被删除的占位符。 密码 是一个占位符,用于 SQL Server 登录密码。
  3. Sqlcmd 提示时,键入以下命令,并按 ENTER:
    更改登录 SQLLogin DEFAULT_DATABASE = AvailDBName
    注意 AvailDBName 是一个占位符,可以登录访问的 SQL Server 实例中的现有数据库的名称。
  4. 在 sqlcmd 提示符下,键入 转到然后按 enter 键。

SQL Server 2000年和 SQL Server 7.0

您可以使用 osql 实用工具更改 SQL Server 7.0 和 SQL Server 2000年中的默认数据库。若要执行此操作,请执行以下步骤:
  1. 在命令提示符处,键入以下命令,然后按 enter 键:
    C:\>osql-E-d 母版
  2. osql 提示键入以下命令,然后按 enter 键:
    1 1> sp_defaultdb ' 用户 's_login',而 'master'
  3. 在第二个提示符下,键入以下命令,然后按 enter 键:
    2 1> 转

状态

这种现象是设计使然。

更多信息

要演示此行为,请尝试使用 OSQL 连接,并使用-d选项用于现有数据库中正常的联机状态。连接成功,并且没有任何错误信息。

相反,您会收到该数据库不可用时将从各种 SQL Server 客户端实用程序与以下类似的响应:
  • SQL Server 管理 Studio (SQL Server 2005)
    无法连接到 服务器名
    其他信息:
    无法打开用户默认数据库。登录失败。用户登录失败用户名'.(Microsoft SQL Server,错误: 4064)
  • 在 SQL Server 2005 中使用 Sqlcmd 实用程序
    Msg 4064,11,1,状态服务器级别 服务器名第 1 行
    无法打开用户默认数据库。登录失败。
    Msg 18456,14,状态 1,服务器级别 服务器名行 1Login 用户失败用户名'.
  • SQL Server 2000年查询分析器 (QA)
    无法连接到服务器 TESTSERVER:
    服务器: 消息 4064,级别 16,状态 1
    [] Microsoft[ODBC SQL Server 驱动程序][SQL Server]无法打开用户默认数据库。登录失败。
  • SQL Server 2000年服务器企业管理器 (SEM)
    不能建立连接到 TESTSERVER-无法打开用户默认数据库 dbid。改为使用 master 数据库。

    请验证 SQL Server 正在运行,并检查您的 SQL Server 注册属性 (通过右键单击 TESTSERVER 节点) 并重试。
  • 使用 SQL Server 2000 OSQL 命令提示符下

    当您使用C:\>osql-E命令时,您会收到以下错误消息:
    无法打开用户默认数据库。登录失败。
  • SQL Server 7.0 查询分析器 (QA)
    无法连接到服务器 \\TESTSERVER:
    服务器: 消息 4062,级别 16,状态 1
    [] Microsoft[ODBC SQL Server 驱动程序][SQL Server]无法打开用户默认的数据库<ID>。改为使用 master 数据库。</ID>
  • 使用 SQL Server 7.0 OSQL 命令提示符下

    当您使用C:\>osql-E命令时,您会收到以下错误消息:
    无法打开用户默认数据库 dbid。
    改为使用 master 数据库。
下表提供了有关产品或自动检查此条件和 SQL Server 产品对规则进行评估所依据的版本的 SQL Server 实例上的工具的详细信息。
收起该表格展开该表格
规则的软件规则标题规则说明对规则进行评估所依据的产品版本
系统中心顾问SQL Server 服务器级别主体不存在默认数据库配置System Center Advisorchecks 如果 SQL Server 实例中出现的任何登录名不存在默认数据库配置。检查 theadvisor 警报"收集的信息"一节中提供,按照本文来解决该问题所涉及的步骤的详细信息。 SQL Server 2008

SQL Server 2008 R2

SQL Server 2012

属性

文章编号: 307864 - 最后修改: 2014年6月22日 - 修订: 8.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 标准版
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Enterprise Evaluation
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Express with Advanced Services
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Standard Edition for Small Business
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
关键字:?
kbtshoot kbsqlsetup kbprb kbmt KB307864 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 307864
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com