ASP.NET備份與還原SQL Server資料庫
1.備份
SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["Connection"]);
string dbFileName = DateTime.Now.ToString("yyyyMMddHHmmss")+".bak";
try
{
SqlCommand command = new SqlCommand("use master;backup database xxdl to disk=@path;", connection);
connection.Open();
string path = Server.MapPath("~\\App_Data") + "\\" + dbFileName;
command.Parameters.AddWithValue("@path", path);
command.ExecuteNonQuery();
lblBackup.Text = "Database Backup成功";
}
catch (Exception ex)
{
lblBackup.Text = ex.Message;
}
finally
{
connection.Close();
}
Bind();//產生了新備份檔案,更新下拉框
2 還原
SqlConnection conn = new SqlConnection("Server=.\\sqlexpress;database=master;uid=sa;pwd=sa");
string dbFileName = ddlRestore.SelectedValue;
if (dbFileName == string.Empty)
{
lblRestore.Text = "沒有Database Backup檔案,請先備份";
return;
}
try
{
string sql2 = "Alter Database xxdl Set Offline with Rollback immediate;use master;restore database xxdl from disk=@path With Replace;Alter Database xxdl Set OnLine With rollback Immediate;";
SqlCommand command = new SqlCommand(sql2,conn);
conn.Open();
string path = Server.MapPath("~\\App_Data") + "\\" + dbFileName;
command.Parameters.AddWithValue("@path", path);
command.ExecuteNonQuery();
lblRestore.Text = "資料庫還原成功";
Session.Abandon();
Response.Redirect("login.aspx");
}
catch (System.Exception ex)
{
lblRestore.Text = ex.Message;
}
finally
{
conn.Close();
}
1.備份
SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["Connection"]);
string dbFileName = DateTime.Now.ToString("yyyyMMddHHmmss")+".bak";
try
{
SqlCommand command = new SqlCommand("use master;backup database xxdl to disk=@path;", connection);
connection.Open();
string path = Server.MapPath("~\\App_Data") + "\\" + dbFileName;
command.Parameters.AddWithValue("@path", path);
command.ExecuteNonQuery();
lblBackup.Text = "Database Backup成功";
}
catch (Exception ex)
{
lblBackup.Text = ex.Message;
}
finally
{
connection.Close();
}
Bind();//產生了新備份檔案,更新下拉框
2 還原
SqlConnection conn = new SqlConnection("Server=.\\sqlexpress;database=master;uid=sa;pwd=sa");
string dbFileName = ddlRestore.SelectedValue;
if (dbFileName == string.Empty)
{
lblRestore.Text = "沒有Database Backup檔案,請先備份";
return;
}
try
{
string sql2 = "Alter Database xxdl Set Offline with Rollback immediate;use master;restore database xxdl from disk=@path With Replace;Alter Database xxdl Set OnLine With rollback Immediate;";
SqlCommand command = new SqlCommand(sql2,conn);
conn.Open();
string path = Server.MapPath("~\\App_Data") + "\\" + dbFileName;
command.Parameters.AddWithValue("@path", path);
command.ExecuteNonQuery();
lblRestore.Text = "資料庫還原成功";
Session.Abandon();
Response.Redirect("login.aspx");
}
catch (System.Exception ex)
{
lblRestore.Text = ex.Message;
}
finally
{
conn.Close();
}