0

首先使用 VS2010 代码和带有 MVC3 webapp 的 SQL Server 2008r2,SetInitializer 在丢失或模型更改时按预期创建一个数据库。

创建的 db 具有文件名格式 database.mdf 和 **logfile database.ldf(可以将此默认“name.ldf”格式更改为“name_log.ldf”吗?)。

当使用 VS2010 服务器资源管理器打开数据库时(在解决方案资源管理器中双击 db),VS2010 会创建一个新的第二个日志文件,格式为 database_log.ldf。

我现在可以在 VS2010 服务器资源管理器中浏览数据库,但不能再调试、dropcreateonmodelchange 或以其他方式使用 db。

尝试调试时显示的错误是:{“一个或多个文件与数据库的主文件不匹配。如果您尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应从备份中恢复。\r\n无法打开登录请求的数据库“数据库”。登录失败。\r\n用户“My-PC\Me”登录失败。\r\n登录文件 'C:\Users\Me\project\App_Data\database.ldf' 与主文件不匹配。它可能来自不同的数据库,或者日志可能以前已重建。"} ...这很公平,因为该项目期望当前的日志文件是“database.ldf”。

ASPNETDB.MDF 和 aspnetdb_log.ldf 文件/名称也已创建,并且没有默认日志文件名问题,因此该问题不适用于 ASPNETDB。

是否可以更改 SetInitializer 的默认日志文件名以创建“database_log.ldf”格式的日志文件名而不是“database.ldf”?我用谷歌搜索没有成功,并查看了我在 VS2010 中可以找到的所有设置和选项。格式是否存储在可以手动编辑的配置文件中?

4

3 回答 3

0

为了在 VS2010 中继续使用数据库,我最终删除了 database.ldf 日志文件,并将新的 database_log.ldf 文件重命名为原始的 database.ldf 名称。它既不优雅也不正确,但它适用于开发。

这并没有解决 codefirst 创建一个版本的日志文件和服务器资源管理器在同一 VS2010 环境中的开发过程的不同阶段创建第二个不同命名的日志文件的错误行为。

于 2013-03-30T11:38:10.953 回答
0

对于任何阅读此主题的人,尤其是作者,我在 MS SQL Server 论坛上找到了解决方案。这是答案:

Visual Studio 损坏 SQL Server 日志文件

于 2013-08-23T00:05:55.570 回答
0

我在使用 VS2010 Express 和 SServer 2012 Express 时遇到了完全相同的问题。我正在尝试阅读 Julie Lerman 的《Programming Entity Framework 2nd Edition》一书。

没有比这更好的解决方案 - 重命名日志文件吗?我试图重命名这些文件,但 Windows 会告诉我该文件正在使用中,即使我关闭了 VS 和 SSMS。数据库的 Process Explorer 搜索告诉我该文件正在由 SServer 使用。

我发现我所要做的就是尝试使用 DB Connection 向导创建一个连接字符串,并且 SServer 中的 DB 获得了创建的“额外”日志文件,我得到了与您看到的相同的消息。

这是 VS2010Ex 中的错误吗?有可用的补丁吗?我们如何防止 VS2010 损坏数据库?

这是创建数据库之后的目录,但在尝试从 VS 进行任何操作之前:

E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA>dir programmingefdb2*
 Volume in drive E is JET20110708-1
 Volume Serial Number is EA22-1F7C

 Directory of E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA

 08/09/2013 11:39 AM 10,485,760 PROGRAMMINGEFDB2_Data.mdf
 08/09/2013 11:39 AM 1,310,720 PROGRAMMINGEFDB2_Log.ldf
 2 File(s) 11,796,480 bytes
 0 Dir(s) 250,238,443,520 bytes free

这是在 VS 项目中建立连接后的目录,但甚至没有尝试运行更新代码(并且没有将数据库复制到项目中):

E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA>dir programmingefdb2*
 Volume in drive E is JET20110708-1
 Volume Serial Number is EA22-1F7C

 Directory of E:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SAMPLES\MSSQL\DATA

 08/09/2013 11:51 AM 10,485,760 PROGRAMMINGEFDB2_Data.mdf
08/09/2013 11:51 AM 516,096 PROGRAMMINGEFDB2_Data_log.ldf
 08/09/2013 11:39 AM 1,310,720 PROGRAMMINGEFDB2_Log.ldf
 3 File(s) 12,312,576 bytes
 0 Dir(s) 250,237,927,424 bytes free
于 2013-08-10T14:53:36.020 回答