2012-07-24 62 views
8

在調試下,IIS快速運行的ASP.Net MVC應用程序,我得到嘗試使用成員資格提供程序時出現以下錯誤:SQL服務器:可以通過登錄無法打開數據庫請求

無法打開數據庫「MYDB 「請求登錄。登錄失敗。

用戶'MY-PC \ MyName'登錄失敗。

我試圖使用概述的步驟來解決在

https://stackoverflow.com/a/2577854/141172

SELECT SUSER_ID('MY-PC\MyName') 

返回的ID。

SELECT USER_ID('MY-PC\MyName') 

返回NULL

CREATE USER [MY-PC\MyName] FROM LOGIN [MY-PC\MyName] 

返回錯誤消息

登錄已經有下一個不同的用戶名的帳戶。

事實上,有一個登錄賬號,當我創建的數據庫中自動創建,稱爲

DBO

映射到MY-PC\MyName

我的連接字符串是

Data Source=.\SQLEXPRESS;Initial Catalog=MyDB;Persist Security Info=True;Integrated Security=SSPI; 

在生產環境中我會知道如何創建相應的用戶和登錄運行。當我的Windows帳戶已經與dbo關聯時,我遇到了如何解決IIS Express使用我的Windows帳戶名嘗試登錄MyDB的事實。

+0

它看起來很奇怪。你必須連接。也許你嘗試連接到另一臺服務器?你檢查過服務器日誌嗎? http://blogs.msdn.com/b/sql_protocols/archive/2006/02/21/536201.aspx – 2012-07-24 05:43:23

+0

感謝。檢查日誌實際上導致我以一種全面的方式發現錯誤。增加了解決方案。 – 2012-07-24 15:42:40

回答

12

原來是連接字符串初始目錄部分中的拼寫錯誤。

尋找在事件日誌中,我看到了如下的錯誤

用戶登錄失敗 'MY-PC \ MYNAME'。原因:無法打開明確指定的數據庫。 [客戶端:]

然後找同一事件的細節選項卡上,我看到二進制數據在字節信息包含

0000: 18 48 00 00 0E 00 00 00 .H...... 
0008: 17 00 00 00 45 00 52 00 ....E.R. 
0010: 49 00 43 00 2D 00 4F 00 I.C.-.O. 
0018: 52 00 49 00 47 00 49 00 R.I.G.I. 
0020: 4E 00 5C 00 53 00 51 00 N.\.S.Q. 
0028: 4C 00 45 00 58 00 50 00 L.E.X.P. 
0030: 52 00 45 00 53 00 53 00 R.E.S.S. 
0038: 00 00 07 00 00 00 6D 00 ......m. 
0040: 61 00 73 00 74 00 65 00 a.s.t.e. 
0048: 72 00 00 00    r... 

注意怎樣的,最後部分是UTF-16編碼單詞「主」。這讓我的目標是連接到主目錄而不是請求的目錄,這反過來導致在連接字符串中的目錄名稱中發現錯字。

這本來是這麼多更好,如果微軟將不得不只顯示像「沒有這樣的目錄:MyCatalog」錯誤。

+3

+1用於發佈其他人的解決方案。 – 2012-07-25 00:08:49

+0

HOLY $ HIT多麼糟糕的錯誤信息!這實際上也是一個拼寫錯誤的數據庫名稱。我結束了我消除了登錄,其中被鎖定我出去的SQL Server,我不能恢復它,因爲我的管理員組成員用戶帳戶,顯然是不夠的管理員和-m/-f技巧不工作要麼。所以我重新安裝了我的sql實例三次! – 2013-07-24 20:47:56

相關問題