从C#还原SQL Server数据库时出错

wal*_*gfx 0 c# sql sql-server visual-studio-2012

我有一个表单来恢复数据库备份,当用户选择file.bak并单击一个Restore按钮时,会显示以下消息:

在此输入图像描述

我在SQL Server中的数据库更改为Single User模式

在此输入图像描述

我使用Windows身份验证

在此输入图像描述

我的代码

///// declare some var in partial class 
public partial class RestoewDB : Form
{
    private string connectionString = @"server=.\SQLEXPRESS;DataBase=StoreDataBase; Integrated Security=true";
    private SqlConnection conn;
    private SqlCommand command;

    //////////////
    // my code when user select file.bak and click restore button
    /////////////
    try
    {
        string DatabaseName = "StoreDataBase";

        conn = new SqlConnection(connectionString);
        conn.Open();

        string sql = "Alter Database " + DatabaseName + " Set SINGLE_USER WITH ROLLBACK IMMEDIATE; ";
        sql += "Restore Database " + DatabaseName + " FROM Disk ='" + textBox1.Text + "'; ";
        command = new SqlCommand(sql, conn);
        command.ExecuteNonQuery();

        textBox1.Text = "";
        MessageBox.Show("Successfully Restored Database.");

        conn.Close();
        conn.Dispose();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*tta 7

RESTORE无法处理数据库'StoreDataBase',因为此会话正在使用它.建议在执行此操作时使用master数据库.

这告诉你你需要知道什么.在会话中使用数据库时,无法对数据库执行还原.使用另一个数据库 - master,正如错误消息建议的那样,是一个不错的选择.相应地更改连接字符串.

server = .\SQLEXPRESS; DataBase=master; Integrated Security=true
Run Code Online (Sandbox Code Playgroud)