none
Visual studio 2012 + MS sql server ( восстановление резервной копии путем запросов из VS) RRS feed

  • Вопрос

  • Есть у меня файл бэкапа, хочу из проекта восстановить резервную копию.

    Вот что под кнопкой:

     private void восстановитьРезервнуюКопиюToolStripMenuItem_Click(object sender, EventArgs e)
            {
                SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=book_maker;Integrated Security=True");
                SqlCommand command0 = new SqlCommand("ALTER DATABASE [book_maker] SET SINGLE_USER WITH ROLLBACK IMMEDIATE", conn);
                SqlCommand command = new SqlCommand("EXEC master.dbo.sp_detach_db @dbname= N'book_maker'", conn);
                SqlCommand command2 = new SqlCommand("sp_attach_db @dbname='book_maker', @filename1='C:\\Program Files\\Microsoft SQL Server\\MSSQL11.SQLEXPRESS\\MSSQL\\DATA\\book_maker.mdf'", conn);
                SqlCommand command3 = new SqlCommand("RESTORE DATABASE [book_maker] FROM DISK = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL11.SQLEXPRESS\\MSSQL\\Backup\\backup.bak' WITH REPLACE, FILE = 1, NOUNLOAD, STATS = 10", conn);
                SqlCommand cmd = new SqlCommand("ALTER DATABASE [book_maker] SET MULTI_USER WITH ROLLBACK IMMEDIATE", conn);
                try
                {
                    conn.Close();
                    if (conn.State == ConnectionState.Closed)
                    {
                        //conn.ConnectionString = LIBCString1;
                        conn.Open();
                    }
                    MessageBox.Show("ВНИМАНИЕ! Идёт выполнение восстановления резервной копии БД. Дождитесь окончания работы.Не выключайте питание компьютера", "ВНИМАНИЕ! ИДЁТ ВОССТАНОВЛЕНИЕ!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    command0.ExecuteNonQuery();
                    command.ExecuteNonQuery();
                    command2.ExecuteNonQuery();
                    command3.ExecuteNonQuery();
                    MessageBox.Show("Резервная копия Восстановлена!");
                    //logfile.WriteLine(user + ":Восстановление резервной копии БД");
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                    MessageBox.Show(ex.Message.ToString());
                }
                conn.Close();

     на вот этом запросе "EXEC master.dbo.sp_detach_db @dbname= N'book_maker'" вылезает ошибка : 

    Невозможно отключить база данных "book_maker", так как она используется в данный момент.

    Что делать для успешного восстановления резервной копии?

    16 сентября 2013 г. 19:30

Ответы