2012-11-12 149 views
4

對於ASP.net來說我相當新(使基本應用程序大約2周),並且我的數據庫遇到了一個大問題。ASP.NET數據庫總是損壞

我正在用一個登錄系統構建一個簡單的電子郵件應用程序。前幾天一切都很順利。

但不知爲何,每次我試圖訪問一個數據庫文件,我的程序即時得到以下錯誤:

*服務器錯誤「/」應用。 數據庫文件可能已損壞。運行修復工具來檢查數據庫文件。 [數據庫名稱= C:\ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 異常詳細信息:System.Data.SqlServerCe.SqlCeException:數據庫文件可能已損壞。運行修復工具來檢查數據庫文件。 [數據庫名稱= C:\ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] *

此錯誤始終顯示在每個數據庫中。無論我使用過去的數據庫還是創建一個新的空數據庫。

林有這個問題已經沒有任何關係數據庫損壞,但另外一個問題我有感覺:

時,我有我的本地數據庫連接在服務器資源管理器,我能夠添加表 - 填寫帶有數據的表格,測試連接總是成功。當我嘗試通過我的程序連接到數據庫時:

*異常詳細信息:System.Data.SqlServerCe.SqlCeException:存在文件共享衝突。一個不同的過程可能是使用該文件。 [C:\ Users \ ArvinAsus \ Documents \ Visual Studio 2010 \ Projects \ mailer \ App_Data \ Database.mdf] *

然後我關閉服務器資源管理器中的連接,並且錯誤消失了,給我留下了損壞錯誤。

我完全被這個困住了。有人想讓我再次去?

在此先感謝。

PS:即時通訊使用的Visual Studio 2010專業

+0

你可以看看這個:http://stackoverflow.com/questions/427888/why-do-i-receive-file-share-error-if-sql-compact-allows-multiple-connections –

回答

3

一個.MDF文件不是SQL精簡版數據庫文件,但SQL Server數據文件。您應該使用SQL Server(Express,Professional或任何其他版本)來訪問數據庫,並使用SQL Native Client,OleDB或任何其他數據連接器而不是SQLServerCE訪問數據庫。

+0

謝謝,我會試試看,只有我不明白的是爲什麼它幾天前以完全相同的方式工作? Visual Studio安裝了SQLserverCE,那麼爲什麼它會製作.mdf數據庫,如果這不適用於SQL Compact Edition? – Arvin

+0

不知道! : - /我見過幾種情況,在SQL Server關閉時人們可以讀取MDF文件,所以我猜這兩種文件格式都有一些基本結構。 –

2

你的異常告訴你發生了什麼事:There is a file sharing violation. A different process might be using the file.許多進程在完成使用後都不會放開文件。您應該使用實際的SQL服務器實例(即使它是快速的)能夠管理到數據庫的連接。

我upvoted @Y。 Ecarri的回答是因爲我認爲他有正確的解決方案,但是您發生文件共享衝突的最可能原因是開發環境本身。如果您正在使用IDE調試器附帶的內置Cassini服務器(可能),它將使調試會話之間的開發Web服務器保持活動狀態。由於第一次會話會將.mdf的實例保存在內存中,因此即使應用程序可用,後續調試會話也將無法訪問它。爲了釋放文件,您需要停止調試,然後右鍵單擊代表開發Web服務器實例的系統托盤中的任何圖標,並將其告知Stop

+0

很好的解釋!這解決了我之前評論中提到的謎團。 –

+0

謝謝你的回答。儘管按停止調試不會修復文件共享衝突錯誤。停止我的系統托盤中的服務器也沒有幫助!我將嘗試使用SQL Server Express並使用.sdf文件來查看是否可以使用 – Arvin

+0

我唯一修復文件共享衝突的方法是轉到服務器資源管理器並關閉數據庫連接。 – Arvin

0

我的問題是我的web.config文件被修改。數據庫的物理位置發生了變化,並且引發了此錯誤。該數據庫仍然存在,但它並沒有指向正確的位置。

爲了確保這不是問題,請仔細檢查您的web.config文件。我希望這可以幫助別人。