Сравните таблицы между двумя файлами MDF - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь синхронизировать таблицы в двух разных .MDF файлах. После успешного создания таблицы данных для первого файла я получаю сообщение об ошибке при попытке создать второй файл:

Невозможно прикрепить файл 'E: \ JVT-Inventory.mdf' в качестве базы данных 'JVT-Inventory', поскольку это имя базы данных уже прикреплено к файлу 'C: \ Database \ JVT-Inventory.mdf'

Я создал отдельные процедуры для каждого соединения, чтобы создать таблицы, а затем удалил соединение. И datatable, и адаптер являются глобальными переменными, которые будут использоваться в моих подпрограммах для сравнения таблиц. Похоже, что ни одно из онлайн-исследований не относится к тому, что я пытаюсь выполнить.

        string conString;
        conString = "Data Source=(LocalDB)\\v11.0;attachdbfilename=" + @txtPath.Text + ";Initial Catalog=JVT-Inventory;integrated security=True";
        using (SqlConnection connection = new SqlConnection(conString))
        {
            daRemote = new SqlDataAdapter("SELECT * FROM tblProduct ORDER BY keyPartNo", connection);
            SqlCommandBuilder cbRemote = new SqlCommandBuilder(daRemote);
            daRemote.Fill(dtRemote);
            connection.Dispose();

Это подключение к файлу на флешке Проблема заключается в том, что файл MDF остается открытым, пока я не выйду из приложения. Теперь у меня вопрос, как мне закрыть файл MDF из моего приложения?

1 Ответ

0 голосов
/ 24 марта 2019

После поиска многих статей о работе с базами данных я выяснил следующее:

            SqlConnection cnRemoteBye = new SqlConnection();
            SqlCommand cmdRemoteBye = new SqlCommand();
            cnRemoteBye.ConnectionString = @"Data Source=(LocalDB)\v11.0;Integrated Security=True";
            cmdRemoteBye.CommandText = "ALTER DATABASE [JVT-Inventory] SET OFFLINE WITH ROLLBACK IMMEDIATE \n\r exec sp_detach_db @dbname = [JVT-Inventory]";
            cmdRemoteBye.Connection = cnRemoteBye;
            cnRemoteBye.Open();
            cmdRemoteBye.ExecuteNonQuery();
            cnRemoteBye.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...