我在几天前发生了一个奇怪的错误,我无法找到解决方案。 我有一个C#Form应用程序,它与Visual Studio Express(.mdf文件)生成的SQL数据库进行通信。如果我的连接字符串指向根目录中的数据库(数据库已由VS自动创建),则一切正常。我可以在Debug和Release中编译可执行文件。
在另一台机器上(我复制可执行文件和数据库.mdf)进行测试我已经更改了连接字符串,以便指向同一可执行文件目录中的数据库,在这种情况下,它不会工作(发布和调试)。
我来到我的电脑,我使用相同的连接字符串,而不是指向发行目录中DB的根目录中的数据库。
奇怪的是它可以在调试中工作,但不能在发布中工作。
发生错误的是以下一个
异常:一个或多个文件与主文件不匹配 数据库。如果您尝试附加数据库,请重试 用正确的文件操作。如果这是现有数据库, 该文件可能已损坏,应从备份中恢复。可以 没有打开新数据库'C:\ USERS \ TEST \ VISUAL STUDIO \ PROJECTS \ LEONARDO \ LEONARDO 0.1.1.1 \ LEONARDO \ BIN \发布\ DB.MDF”。 CREATE DATABASE被中止。尝试为文件C:\ Users \ Test \ Visual附加自动命名的数据库 Studio \ Projects \ Leonardo \ Leonardo 0.1.1.1 \ Leonardo \ bin \ Release \ DB.mdf 失败。存在同名的数据库,或指定的文件不能存在 打开,或者它位于UNC分享。日志文件 'C:\ Users \ Test \ Visual Studio \ Projects \ Leonardo \ Leonardo 0.1.1.1 \ Leonardo \ bin \ Release \ DB.ldf'与主文件不匹配。它可能来自不同的数据库,或者可能已经重建了日志 先前。
,代码是
string Result = string.Empty;
SqlConnection conn = new SqlConnection(Settings.DataBasePath);
try
{
conn.Open();
}
catch (Exception ex)
{
string Errore = String.Format("Exception: {0}", ex.Message);
MessageBox.Show(Errore);
throw;
}
SqlDataReader leggi = null;
//SqlCommand comando = new SqlCommand("SELECT " + "Database Version" + " FROM Data", conn);
SqlCommand comando = new SqlCommand("SELECT * FROM Data", conn);
leggi = comando.ExecuteReader();
while (leggi.Read())
{
Result += leggi["Database Version"].ToString().TrimEnd();
}
conn.Close();
祝你好运
答案 0 :(得分:0)
你的问题在这里:
Log file 'C:\Users\Test\Visual Studio\Projects\Leonardo\Leonardo 0.1.1.1\Leonardo\bin\Release\DB.ldf' does not match the primary file.
您应该确保您的调试和发布文件夹包含相同的.mdf和.ldf文件。