我是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
答案 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文件。我希望这有助于某人。