簡體   English   中英

“無法打開用戶默認數據庫。登錄失敗。” 安裝 SQL Server Management Studio Express 后

[英]"Cannot open user default database. Login failed." after installing SQL Server Management Studio Express

我在程序使用的本地文件中有一個數據庫。 該程序的功能有限,我需要運行一些快速查詢。 我安裝了 SQL Server Management Studio Express 2005 (SSMSE),連接到 SQL Server 實例,附加了數據庫文件,並運行了查詢。 現在原來的程序將不再連接到數據庫。 我收到錯誤:

無法打開用戶默認數據庫。 登錄失敗。 用戶“MyComputer\\MyUserName”登錄失敗。

我已經回到 SSMSE 並嘗試設置默認數據庫。 我已經打開了Security, Logins, BUILTIN\\AdministratorsBUILTIN\\Users General 下,我已將默認數據庫設置為程序的數據庫。 User Mappings 下,我確保勾選了數據庫並且勾選了db_datareaderdb_datawriter

該程序使用連接字符串:

服務器=(本地)\\實例; AttachDbFilename=C:\\PathToDatabase\\Database.mdf; 集成安全=真; 用戶實例=真;

我對數據庫管理了如指掌。 我還缺少什么?

這可能不是專門回答您的問題,但它可能會幫助其他人因不同問題而遇到類似問題

就我而言,問題是我的用戶默認使用一個因任何原因無法訪問的數據庫(可以重命名、刪除、損壞或......)要解決問題,只需按照以下說明進行操作

  1. 嘗試在登錄頁面再次登錄有其他選項卡選擇“連接屬性”。

  2. 在選項卡下找到“連接到數據庫”並選擇您有權訪問的現有數據庫,例如 tempdb 或 master

  3. 連接到 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/

首先,嘗試隔離您的問題:

  1. 備份文件! 顯然,在某些情況下,以下某些步驟可能會導致文件消失。
  2. 您確定要通過 Management Studio 連接到與程序相同的實例嗎?
  3. 如果可能,請嘗試關閉您不希望使用的實例。
  4. 將用戶的默認數據庫設置為 master 並嘗試使程序登錄。
  5. 嘗試通過 Management Studio 以用戶身份登錄 - 由於您已集成安全性,您應該以程序用戶身份打開 Management Studio。
  6. 您是否在使用“用戶實例” - 也許不知道? 如果是這樣,這可能會有所幫助: 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:在第一次編輯中,新項目被添加到列表中。 所以評論中的數字與答案中的數字不對應。

我終於明白了這一點,我的情況與我今晚讀到的其他情況不同。

我已經從備份中恢復了我的數據庫。 我知道我一直在使用一個特定的登錄用戶,所以我在 SSMS 中創建了該用戶。 但是,在備份中出現的數據庫下已經有一個同名的用戶。

由於我在嘗試解決此問題時費了很大勁,因此無法輕松刪除 DB 下的用戶。 我刪除了數據庫並再次恢復。 然后:

  1. 刪除Databases->[我的數據庫]->Users下的用戶
  2. 在 Security->Logins 中再次創建用戶(不在您的數據庫下,盡管這也可能有效。
  3. 轉到新創建的用戶。 選擇屬性。 然后在用戶映射下,告訴它使您的數據庫成為默認值。 給它讀寫權限。

總結:我有兩個用戶。 一個是數據庫附帶的,一個是我創建的。 刪除數據庫附帶的那個並創建自己的。

當我將默認數據庫脫機時,這個問題就出現了。 接下來我知道我無法登錄。 切換到連接屬性選項卡並選擇下拉列表來更改我想要連接的數據庫也失敗了。

一旦我手動輸入 master 作為我想要連接的數據庫(在“連接屬性”選項卡上),它就讓我立即進入。

首先單擊“連接到服務器”提示的選項>>按鈕。

現在將連接到數據庫更改為服務器上的任何現有數據庫,如 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/

我也遇到了同樣的問題,結果是我試圖訪問內置的成員資格類(在視圖中),而 .Net 試圖在 App_Data 文件夾中創建數據庫:

@Membership.GetUser().ProviderUserKey

這將觸發系統嘗試創建基於內置會員系統的數據庫,這可能不是您系統的設置方式。

我有一個類似的問題,只需下載能夠啟動用戶實例的 SQL Express 實用程序。 SSEUtil 是由 Visual Studio 團隊編寫的工具,用於幫助解決用戶實例問題,您可以在隨該實用程序安裝的自述文件中閱讀有關它的更多信息。 http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en

希望這會有所幫助。

就我而言,我必須設置“連接到任何數據庫”的正確路徑:

在您的實例上,轉到Security ,然后轉到Logins

右鍵單擊那里,您將看到properties ,您應該單擊Securables

在那里它可以連接到任何數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM