ASP.NET数据库始终已损坏

时间:2012-11-12 14:13:33

标签: c# asp.net database sql-server-2008

我是ASP.net的新手(制作基本的应用程序大约2周),并且我的数据库遇到了一个大问题。

我正在使用登录系统构建一个简单的电子邮件应用程序。几天前一切都很好。

但不知何故,每次我尝试使用我的程序访问数据库文件时都会出现以下错误:

*'/'应用程序中的服务器错误。 数据库文件可能已损坏。运行修复实用程序以检查数据库文件。 [数据库名称= 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 Professional

3 个答案:

答案 0 :(得分:3)

.MDF文件不是SQL Compact Edition数据库文件,而是SQL Server数据文件。您应该使用SQL Server(Express,Professional或任何其他版本)来访问您的数据库,并使用SQL Native Client,OleDB或任何其他数据连接器而不是SQLServerCE来访问它。

答案 1 :(得分:2)

您的异常会告诉您发生了什么:There is a file sharing violation. A different process might be using the file.许多进程即使在使用完文件后也不会放弃文件。您应该使用实际的SQL服务器实例(即使它是快速的)来管理与数据库的连接。

我赞成@Y。 Ecarri的答案是因为我认为他有正确的解决方案,但是你得到文件共享冲突的最可能原因是开发环境本身。如果您正在使用IDE调试器附带的内置Cassini服务器(可能),它将使调试会话之间的开发Web服务器保持活动状态。由于第一个会话使.mdf的实例在内存中保持活动状态,因此后续调试会话将无法访问它,即使它应该可用。要释放文件,您需要停止调试,然后右键单击代表开发Web服务器实例的系统托盘中的任何图标,并告诉他们Stop

答案 2 :(得分:0)

我的问题是我的web.config文件被修改了。数据库的物理位置已更改,并且正在抛出此错误。数据库仍在那里,但它没有指向正确的位置。

要确保这不是问题,请仔细检查您的web.config文件。我希望这有助于某人。