2012-03-19 68 views
0

嗨,我有一个使用具有以下连接字符串附加MDF文件一个工作程序:数据库错误在ASP.NET MVC3 EF4.1代码首先

<add name="SqlDataContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=true;User Instance=true;AttachDBFilename=|DataDirectory|\WPCloudApp26.mdf;Initial Catalog=WPCloudApp26;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 

我使用的是Windows手机云应用模板,我有Azure存储模拟器在我的电脑上运行

一切正常,直到我做了第一次的步骤如下:

  1. 我要查看的数据库,所以我双击App_Data文件/ WPCloudApp26.mdf FIL当应用程序没有运行时,通过visual studio。当我双击它时,数据库在服务器资源管理器窗格中的数据连接下打开,我可以看到数据库和所有表。到目前为止一切都很好
  2. 我已经完成查看数据库,所以我通过右键单击 - >关闭连接来关闭连接。
  3. 我想再次运行应用程序,当我运行它时,所有的地狱崩溃。我收到以下错误消息:

一个或多个文件与数据库的主文件不匹配。如果您尝试附加数据库 ,请使用 正确的文件重试该操作。如果这是一个现有的数据库,则该文件可能被损坏,应该从备份中恢复。\ r \ n无法打开 数据库\“WPCloudApp26 \”登录请求。登录 失败。\ r \ n用户'NT AUTHORITY \ NETWORK SERVICE'的登录失败。\ r \ n日志文件'C:\ Users \ michael \ Documents \ Visual Studio 2010 \ Projects \ WPCloudApp26 \ WPCloudApp26 \ WPCloudApp26.Web \ App_Data \ WPCloudApp26.ldf' 与主文件不匹配。它可能来自不同的数据库 或日志可能以前已被重建。

抛出异常的方法var firstItem = context.SqlSampleData.FirstOrDefault();

完蛋了,无论我做什么,我不能再次运行该应用程序。这是让我疯狂的,因为唯一帮助的是创建一个不同名称的新解决方案(这就是为什么我得到了26号)

这是怎么回事?为什么只有在第一次尝试在Visual Studio中查看数据库之后才会发生这种情况?

编辑 我注意到,更改连接字符串中的初始目录和mdf文件解决了这个问题。那么db名称的剩余部分在哪里被保存?我怎样才能清理剩下的剩饭?

回答

1

您不应该尝试打开连接到SQL Server Express的.MDF文件。它可能会破坏.MDF和日志文件之间的一致性。 使用服务器资源管理器或SQL Server Management Studio连接到SQL Server Express服务器。 (还有Express的免费版本)

如果您确实想在Visual Studio中打开.MDF,请首先从SQL Server Express中分离数据库。

+0

谢谢,请你详细解释为什么会发生这种情况?为什么有一个选项可以通过Visual Studio查看它,如果他们知道它打破了它。我开始真的讨厌这个工具包和VS – Michael 2012-03-19 22:52:22

+0

另一个问题,当我从硬盘中删除项目,并重新启动相同的名称,它仍然无法正常工作,即使没有任何内存的任何地方的mdf文件。你有这个解释吗? – Michael 2012-03-19 22:54:07

+0

迈克尔,你应该真的把SQL Server视为一个...服务器。因此,作为开发人员和/或最终用户,您几乎不应该为其内部使用和其使用的文件而烦恼。我看不出为什么你作为开发人员想要自己打开.MDF文件。这会给你带来什么好处?您可以通过使用SSMS作为客户端连接到所有维护和其他任务。 – 2012-03-20 07:04:19

相关问题