Как восстановить базу данных SQL Server 2012? - PullRequest
0 голосов
/ 25 мая 2018

Как восстановить базу данных из SQL Server 2012?

Это мой код:

private void [connTes()][1]
{
        try
        {
            conString = "server=.\\SQLEXPRESS;database=db_datatestproject;user=admin;password=123;Integrated Security=True";
            connnn = new SqlConnection(conString);
            connnn.Open();
        }
        catch
        {
        }
}

private void button1_Click(object sender, EventArgs e)
{
        connTes();

        try
        {
            if (txtlocation.Text == "")
            {
                MessageBox.Show("select database");
                return;
            }
            else
            {
                string databesing = connnn.Database.ToString();
                string a = "ALTER DATABASE " + databesing + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE;";
                a += "RESTORE DATABASE "+databesing+" FROM DISK ='"+txtlocation.Text+"' WITH REPLACE;";

                SqlCommand cmd = new SqlCommand(a, connnn);
                SqlDataReader dr = cmd.ExecuteReader();
                connnn.Close();
                connnn.Dispose();

                MessageBox.Show("done restored");
            }
        }
        catch(SqlException ex)
        {
            MessageBox.Show(ex.ToString());
        }
}

Это ошибка, которую я получаю:

RESTOREне может обработать базу данных 'db_testproject', потому что она используется сессией.Рекомендуется использовать главную базу данных при выполнении этой операции.ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ завершается ненормально.

Как исправить эту ошибку?

Любая помощь очень ценится.

Спасибо.

1 Ответ

0 голосов
/ 25 мая 2018

Добавьте

USE MASTER; 
GO

в начало вашей команды восстановления TSQL.

Вы должны быть в другой базе данных, а не в той, которую вы восстанавливаете.

Такжеобратите внимание на комментарий @ marc_s: «Поскольку вы не получаете никаких данных с этого SqlCommand, используйте ExecuteNonQuery() вместо ExecuteReader()»

...