Help and Support

文章編號: 307864 - 上次校閱: 2007年6月8日 - 版次: 6.3

連線至 SQL Server 的執行個體時,出現錯誤訊息:「無法開啟使用者預設資料庫」

在此頁中

全部展開 | 全部摺疊

徵狀

每位使用者都有預設的資料庫。當您連線至執行 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 InstanceName –d master
    • 如果 SQL Server 登入使用 SQL Server 驗證以連線至執行個體,在命令提示字元中輸入下列命令,然後按下 ENTER:
      sqlcmd -S InstanceName -d master -U SQLLogin -P Password
    注意 InstanceName 是您正在連線的 SQL Server 2005 執行個體名稱的預留位置。SQLLogin 是 SQL Server 登入已卸除之預設資料庫的預留位置。Password 是 SQL Server 登入密碼的預留位置。
  3. 在 sqlcmd 提示字元中,輸入下列命令,然後按下 ENTER:
    ALTER LOGIN SQLLogin WITH DEFAULT_DATABASE = AvailDBName
    注意 AvailDBName 是可由 SQL Server 登入在執行個體中存取的現有資料庫名稱的預留位置。
  4. 在 sqlcmd 提示字元中,輸入 GO,然後按下 ENTER。

SQL Server 2000 和 SQL Server 7.0

您可以使用 osql 公用程式在 SQL Server 2000 和 SQL Server 7.0 中變更預設資料庫。如果要執行這項操作,請依照下列步驟執行:
  1. 在命令提示字元中,輸入下列命令,然後按下 ENTER:
    C:\>osql -E
  2. osql 提示字元中,輸入下列命令,然後按下 ENTER:
    1>sp_defaultdb 'user's_login', 'master'
  3. 在 second 提示字元中,輸入下列命令,然後按下 ENTER:
    2>go

狀況說明

這是原本設計的做法。

其他相關資訊

如果要示範這個做法,請嘗試與 OSQL 連線,並且使用 -d 選項搭配處於標準線上狀態的現有資料庫。連線將會成功,並且不會出現任何錯誤訊息。

相反地,當資料庫無法使用時,您會從各種 SQL Server 用戶端公用程式收到類似下列的回應:
  • SQL Server Management Studio (SQL Server 2005)
    無法連接到 ServerName
    其他資訊:
    無法開啟使用者預設資料庫。登入失敗。使用者 'UserName' 的登入失敗。(Microsoft SQL Server,錯誤:4064)
  • 在 SQL Server 2005 中使用 Sqlcmd 公用程式
    訊息 4064,層級 11,狀態 1,伺服器 ServerName,行 1
    無法開啟使用者預設資料庫。登入失敗。
    訊息 18456,層級 14,狀態 1,伺服器 ServerName,行 1 使用者 'UserName' 的登入失敗。
  • SQL Server 2000 Query Analyzer (QA)
    無法連接到伺服器 TESTSERVER:
    伺服器: 訊息 4064,層級 16,狀態 1
    [Microsoft][ODBC SQL Server Driver][SQL Server]無法開啟使用者預設資料庫。登入失敗。
  • SQL Server 2000 Server Enterprise Manager (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 資料庫。

這篇文章中的資訊適用於:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
關鍵字:?
kbprb KB307864
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

文章翻譯