4

我对 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

4

3 回答 3

3

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

于 2012-11-12T14:26:45.447 回答
2

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

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

于 2012-11-12T14:32:09.683 回答
0

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

为确保这不是问题,请仔细检查您的 web.config 文件。我希望这可以帮助别人。

于 2014-01-27T17:57:21.817 回答