8

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

Cannot open user default database. Login failed. Login failed for user 'MyComputer\MyUserName'.

我已經回到SSMSE並嘗試設置默認數據庫。我已經打開了安全,登錄,BUILTIN \ AdministratorsBUILTIN \ Users。在通用,我已經將默認數據庫設置爲該程序的數據庫。在用戶映射,我確定數據庫被選中,並且的db_datareaderdb_datawriter權限被選中。

程序使用的連接字符串:

Server=(local)\Instance; AttachDbFilename=C:\PathToDatabase\Database.mdf; Integrated Security=True; User Instance=True;

我知道傑克 - 所有關於數據庫管理。我還有什麼遺漏?

回答

6

首先,嘗試找出你的問題:

  1. 取文件的備份!顯然,在某些情況下,以下某些步驟可能導致文件消失。
  2. 您確定您通過Management Studio連接到同一個實例嗎?
  3. 如果可能,請嘗試關閉您不期望使用的實例。
  4. 將用戶的默認數據庫設置爲主,並嘗試使程序登錄。
  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列表中的新問題,當解決這種類型的登錄失敗。但它聽起來很像你正在經歷的。

編輯2:在第一次編輯中,新項目被添加到列表中。所以評論中的數字與答案中的數字不一致。

+0

所有用戶現在都將默認數據庫設置爲「主」。使用SSMSE,我使用集成安全性將問題連接到「(本地)\ Instance」,與程序完全相同。該程序仍然給出相同的錯誤信息。我甚至專門爲我創建了一個登錄名,但仍然沒有愛。 – 2011-12-21 00:28:38

2

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

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

因爲我試圖解決這個問題,所以我無法輕易刪除DB下的用戶。我刪除了數據庫並重新恢復。然後:

  1. 刪除用戶數據庫下 - > [我的數據庫] - >用戶
  2. 在安全性 - >登錄(不是在你的DB再次創建用戶,儘管這可能工作太
  3. 。進入新創建的用戶選擇屬性,然後在用戶映射,告訴它讓你的數據庫的默認給它的讀寫訪問

摘要:。。我有兩個用戶之一,與DB來了。 ,以及我創建的一個。刪除DB附帶的並創建自己的。

0

我也有這個相同的問題,事實證明,我試圖訪問內置的成員類(在視圖中),並且.net試圖在App_Data文件夾中創建數據庫:

@Membership.GetUser().ProviderUserKey 

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

4

這可能沒有具體回答你的問題,但它會幫助其他有類似問題的

的問題是你的用戶默認爲這是不以任何理由accessable(可以重命名,刪除,破壞或數據庫...) 爲了解決這個問題,只要按照下列指示

  1. 嘗試登錄頁面上再次登錄有其他選項卡中選擇 「連接屬性」。
  2. 標籤下找到「連接到數據庫」,然後選擇您訪問喜歡的tempdb或掌握
  3. 一旦您連接到SQL Server實例的現有數據庫中執行下面的TSQL分配登錄一個新的默認數據庫。

    Use master 
    GO 
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB 
    GO 
    

另外,一旦你連接通過UI

更改默認的數據庫名稱掌握

文章摘自: http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/

0

在我來說,我必須設置「連接到任何數據庫」右側路徑:

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

右鍵點擊那裏,你會看到properties,你應該點擊Securables

它有可能給連接到任何數據庫。

0

這個問題表現對我來說,當我把我的默認數據庫脫機。接下來我知道我無法登錄。切換到Connection Properties選項卡並選擇下拉列表來更改我想要連接的數據庫也失敗。

這讓我馬上有一次我手動式主爲DB我想連接到(連接屬性選項卡上)。

相關問題