仅在RELEASE模式下SQL出错

时间:2014-05-05 14:08:47

标签: c# mysql sql database visual-studio-2012

我在几天前发生了一个奇怪的错误,我无法找到解决方案。 我有一个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();

祝你好运

1 个答案:

答案 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文件。