[英]Random “Cannot open user default database. Login failed.” errors in winforms project
[英]"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\\Administrators和BUILTIN\\Users 。 在General 下,我已將默認數據庫設置為程序的數據庫。 在User Mappings 下,我確保勾選了數據庫並且勾選了db_datareader和db_datawriter 。
該程序使用連接字符串:
服務器=(本地)\\實例; AttachDbFilename=C:\\PathToDatabase\\Database.mdf; 集成安全=真; 用戶實例=真;
我對數據庫管理了如指掌。 我還缺少什么?
這可能不是專門回答您的問題,但它可能會幫助其他人因不同問題而遇到類似問題
就我而言,問題是我的用戶默認使用一個因任何原因無法訪問的數據庫(可以重命名、刪除、損壞或......)要解決問題,只需按照以下說明進行操作
嘗試在登錄頁面再次登錄有其他選項卡選擇“連接屬性”。
在選項卡下找到“連接到數據庫”並選擇您有權訪問的現有數據庫,例如 tempdb 或 master
連接到 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/
首先,嘗試隔離您的問題:
我並沒有像您的程序那樣處理附加的文件 - 但是您寫道,您也在 Management Studio 中附加了數據庫。 在運行程序之前,您是否嘗試在那里分離它? 也許您正在看到 Management Studio 和您的程序爭奪對 MDF 文件的獨占訪問權限?
編輯:我在上面添加了第 6 點 - 這是我自己的 TODO 列表中的新內容,當對此類登錄失敗進行故障排除時。 但這聽起來很像你正在經歷的。
EDIT2:在第一次編輯中,新項目被添加到列表中。 所以評論中的數字與答案中的數字不對應。
我終於明白了這一點,我的情況與我今晚讀到的其他情況不同。
我已經從備份中恢復了我的數據庫。 我知道我一直在使用一個特定的登錄用戶,所以我在 SSMS 中創建了該用戶。 但是,在備份中出現的數據庫下已經有一個同名的用戶。
由於我在嘗試解決此問題時費了很大勁,因此無法輕松刪除 DB 下的用戶。 我刪除了數據庫並再次恢復。 然后:
總結:我有兩個用戶。 一個是數據庫附帶的,一個是我創建的。 刪除數據庫附帶的那個並創建自己的。
當我將默認數據庫脫機時,這個問題就出現了。 接下來我知道我無法登錄。 切換到連接屬性選項卡並選擇下拉列表來更改我想要連接的數據庫也失敗了。
一旦我手動輸入 master 作為我想要連接的數據庫(在“連接屬性”選項卡上),它就讓我立即進入。
首先單擊“連接到服務器”提示的選項>>按鈕。
現在將連接到數據庫更改為服務器上的任何現有數據庫,如 master 或 msdb。
更多細節
我也遇到了同樣的問題,結果是我試圖訪問內置的成員資格類(在視圖中),而 .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.