你目前正处于脱机状态,正在等待 Internet 重新连接

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

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 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 2000 中,SQL Server 7.0 中。若要执行此操作,请按照下列步骤操作:
  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 服务器级别主体如果 SQL Server 实例中出现的任何登录系统中心 Advisorchecks 都配置了一个不再存在的默认数据库。检查 theadvisor 警报"收集的信息"一节中提供,按照这篇文章来解决该问题所述的步骤的详细信息。 SQL Server 2008

SQL Server 2008 R2

SQL Server 2012

警告:本文已自动翻译

属性

文章 ID:307864 - 上次审阅时间:02/18/2015 06:41:00 - 修订版本: 9.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, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbtshoot kbsqlsetup kbprb kbmt KB307864 KbMtzh
反馈
ment.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">