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)
RESTORE无法处理数据库'StoreDataBase',因为此会话正在使用它.建议在执行此操作时使用master数据库.
这告诉你你需要知道什么.在会话中使用数据库时,无法对数据库执行还原.使用另一个数据库 - master,正如错误消息建议的那样,是一个不错的选择.相应地更改连接字符串.
server = .\SQLEXPRESS; DataBase=master; Integrated Security=true
Run Code Online (Sandbox Code Playgroud)