2009-01-24 45 views
0

我的SQL Server Express 2005數據庫有一個奇怪的問題。它運行在2003服務器上。使用VS2005,我可以毫無問題地訪問數據庫。但是,當我嘗試運行應用程序我得到:C#asp.net無法打開用戶默認數據庫.ldf可能不正確

Cannot open user default database. Login failed. Login failed for user 'NT AUTHORITY\NETWORK SERVICE'......... .ldf may be incorrect. 

我已經確保NETWORK SERVICE具有完全訪問網站文件夾和所有它的子文件夾。

我注意到,當我查看App_Data的屬性時,它在只讀上有一個灰色的勾號。 .MDF文件不是隻讀的,但我不能刪除這個灰色的勾號。我試圖直接點擊它,然後應用更改,我嘗試了ATTRIB -r但似乎沒有改變它。

我很困惑。

喬恩

回答

0

的差異是不相關的文件夾,但這一事實,安全上下文被映射到一個數據庫中的用戶的ACL。您的數據庫將爲您的用戶帳戶映射可能爲dbo。

如果網絡服務帳戶要使用數據庫,您需要在數據庫中創建一個用戶以映射到機器帳戶。

+0

如何做到這一點與SQL Server Express? – Jon 2009-01-24 22:56:17

1

您實際上是使用SQL Server Express的實例,還是僅使用App_Data文件夾中的數據庫文件?

如果您使用的是SQL Server實例,並且您安裝了SQL Server Management Studio Express,那麼您可以這樣做,使「網絡服務」帳戶可以訪問數據庫(考慮此問題,您應該能夠指向Management Studio在App_Data文件夾的mdf中也是如此,並且做同樣的事情):

  1. 打開SQL Management Studio,連接到您的數據庫並在對象資源管理器中打開它。
  2. 在服務器級別(MachineName \ SQL Express)展開「安全」部分 - 檢查用戶是否已經在下面的「登錄」部分。
  3. 如果沒有,在「登錄」,「新登錄......」
  4. 確保登錄類型設置爲「Windows身份驗證」,然後,您可以用鼠標右鍵單擊:
    1. 命中「搜索...「,然後」高級...「,然後」立即查找「,雙擊」NT服務「,」確定「下一個對話框。
    2. 只需在「登錄名:」框中輸入「NT Authority \ Network Service」即可。
  5. 然後,在「用戶映射」頁面(從左側窗格中選擇)中,在要讓該用戶訪問的數據庫旁邊放置一個刻度。
  6. 如果您有數據庫角色(例如,如果此數據庫安裝了默認ASP.NET成員資格/角色/配置文件表等),請確保爲用戶提供了正確的角色 - 例如「aspnet_Membership_BasicAccess」。

我希望有所幫助。

0

我猜你正在運行非英文操作系統。

無論如何,無論出於何種原因,當操作系統翻譯成其他語言時,網絡服務的登錄名有時會被本地化。

現在很多程序希望登錄名被硬編碼爲「NT AUTHORITY \ NETWORK SERVICE」 - 在德語版本的Windows中,例如帳戶名稱爲「NT-AUTORITÄT\ NETZWERKDIENST」。所以你的程序正在尋找英文名稱,找不到它,並顯示錯誤。

即使一些微軟程序運行到這個陷阱,並顯示安裝時出現這樣的錯誤!

1

剛剛有這個問題。我們在App_Data文件夾中使用了一個數據庫文件。

「似乎我的數據庫仍然在我的IDE(Visual Web Developer Express)中打開,在數據庫瀏覽器中。右鍵單擊數據庫並選擇」關閉連接「修復它。

(感謝asp.net forums

相關問題