狀況

每一位使用者都有預設資料庫。當您連線到執行 Microsoft SQL Server,電腦,而您未指定登入資料庫時,則會使用預設資料庫。不過,如果在連線時的預設資料庫無法使用,您可能無法連線。相反地,您會收到錯誤訊息 4062 或錯誤訊息 4064,類似下列:

無法開啟使用者預設資料庫

原因

在連線時,使用者預設資料庫是無法使用。可能的資料庫:

  • 處於質疑模式。

  • 不存在。

  • 處於單一使用者模式,而且唯一可用的連線正在使用人或是其他項目。

  • 已卸離。

  • 已設定為 RESTRICTED_USER 的狀態。

  • 已離線。

  • 會設定為緊急狀態。

  • 不會不已登入帳戶對應至使用者,或已拒絕使用者存取。

  • 是資料庫鏡像的一部分。

此外,登入帳戶可能屬於多個群組,以及連線時位於無法使用其中一個群組的預設資料庫。

因應措施

若要解決這個問題,請指定有效且可用的資料庫連接字串中。若要避免錯誤,無法使用使用者的預設資料庫時,可以修改登入的使用者身分登入。然後,變更使用者的預設資料庫到目前可供連接的資料庫。

SQL Server 2005 及更新版本

若要變更預設資料庫,SQL Server 2005 中的,您可以使用 sqlcmd 公用程式。若要執行這項操作,請參考下列步驟:

  1. 按一下 [開始]、 按一下 [執行]、 輸入cmd,然後按 ENTER 鍵。

  2. 使用下列方法之一,視 SQL Server 登入所使用的驗證種類而定:

    • 如果 SQL Server 登入是使用 Microsoft Windows 驗證來連接到執行個體,請在命令提示字元中,輸入下列命令,然後按 ENTER 鍵:

      sqlcmd E-S InstanceName d 母片

    • 如果 SQL Server 登入連接到執行個體,使用 SQL Server 驗證,請在命令提示字元中,輸入下列命令,然後按 ENTER 鍵:

      -U SQLLogin -P密碼的 sqlcmd-S InstanceName -d 主要

    注意InstanceName是您所要連線的 SQL Server 2005 執行個體名稱的預留位置。SQLLogin是 SQL Server 登入其預設資料庫已經卸除的預留位置。密碼是 SQL Server 的登入密碼的預留位置。

  3. 在 sqlcmd 提示字元中,輸入下列命令,並按 ENTER:

    變更登入SQLLogin DEFAULT_DATABASE = AvailDBName注意AvailDBName是資料庫的現有的執行個體中的 SQL Server 登入可以存取名稱的預留位置。

  4. 在 sqlcmd 提示字元中,輸入GO,並再按 ENTER 鍵。

SQL Server 2000年和 SQL Server 7.0

若要變更的預設資料庫,SQL Server 7.0 和 SQL Server 2000年中,您可以使用 osql 公用程式。若要執行這項操作,請參考下列步驟:

  1. 在命令提示字元中,輸入下列命令並按 ENTER:

    C:\ > osql-E-d 母片

  2. 在osql提示字元中,輸入下列命令並按 ENTER:

    1 > sp_defaultdb 'user's_login', 'master'

  3. 在第二個提示中,輸入下列命令並按 ENTER:

    2 > 移

狀態

此行為是系統設計的一部份。

更多的資訊

如果要重現這個問題,嘗試與 OSQL,連線並同時使用-d選項與現有的資料庫處於正常的線上狀態。連線成功,而沒有任何錯誤訊息。

相反地,您會收到類似下的面的,從各種 SQL Server 用戶端公用程式,當資料庫無法使用時的回應:

  • SQL Server Management Studio (SQL Server 2005)

    無法連線到伺服器名稱
    其他資訊:
    無法開啟使用者預設資料庫。登入失敗。使用者 '使用者名稱' 的登入失敗。(Microsoft SQL Server,錯誤碼: 4064)

  • 在 SQL Server 2005 中使用 Sqlcmd 公用程式

    訊息 4064,層級 11,狀態 1,伺服器的伺服器名稱,第 1 行
    無法開啟使用者預設資料庫。登入失敗。

    訊息 18456,層級 14、 狀態 1、 伺服器的伺服器名稱、 行 1 登入使用者 '使用者名稱' 失敗。

  • SQL Server 2000年查詢分析器 (QA)

    無法連線到伺服器 TESTSERVER:
    伺服器: 訊息 4064,層次 16,狀態 1
    [Microsoft][ODBC SQL Server Driver][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 Query Analyzer (QA)

    無法連線到伺服器 \\TESTSERVER:
    伺服器: 訊息 4062,層次 16,狀態 1
    [Microsoft][ODBC SQL Server Driver][SQL Server]無法開啟使用者預設資料庫 < > ' ID'。請改用 master 資料庫。

  • 使用 SQL Server 7.0 OSQL 命令提示字元

    當您使用時,您會收到下列錯誤訊息C:\ > osql-E命令:

    無法開啟使用者預設資料庫 'dbid'。
    請改用 master 資料庫。

下表提供有關產品或自動檢查您的 SQL Server 的執行個體,並針對規則進行評估的 SQL Server 產品版本,這種情況的工具的詳細資訊。

規則軟體

規則標題

規則描述

針對規則進行評估的產品版本

System Center 警告器

SQL Server 伺服器層級原則設定不存在的預設資料庫

System Center 警告器會檢查是否任何出現在 SQL Server 執行個體的登入的設定與已不存在的預設資料庫。檢閱警告警示,收集資訊 」 一節中所提供,並遵循步驟來解決這個狀況,本文所討論的詳細資料。

SQL Server 2008

SQL Server 2008 R2

SQL Server 2012

在 Windows 上的 SQL Server 2017

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×