1:客户端
<table border="0" style="width: 60%">
<tr><td colspan="2" style="height: 5px">
数据库还原和备份:</td></tr>
<tr><td style="width: 171px; height: 23px;">
请选择数据库:</td><td align="left" style="width: 358px; height: 23px;">
<asp:DropDownList ID="ddlDatabaseList" runat="server" Width="297px">
</asp:DropDownList></td></tr>
<tr><td style="width: 171px; height: 18px;">
要备份的文件名:</td><td align="left" style="width: 358px; height: 18px">
<asp:TextBox ID="txtDbFileName" runat="server" Width="158px" OnTextChanged="txtDbFileName_TextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtDbFileName"
ErrorMessage="数据库名不能空"></asp:RequiredFieldValidator></td></tr>
<tr><td style="width: 171px">
操作选项:</td><td align="left" style="width: 358px">
<asp:RadioButton ID="rbBackup" runat="server" Checked="True" GroupName="action" Text="备份" />
<asp:RadioButton ID="rbRestore" runat="server" GroupName="action" Text="还原" /></td></tr>
<tr><td style="width: 171px; height: 40px;">
操作:<asp:Label ID="Label1" runat="server" ForeColor="#C00000"></asp:Label></td><td align="left" style="width: 358px; height: 40px;">
<asp:Button ID="btnOK" runat="server" OnClick="btnOK_Click" Text="执 行" Width="51px" />
</td></tr>
</table>
2:服务器
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//在DropDownList中绑定所有数据库
SqlConnection connection = new SqlConnection(@"Data Source=.;Integrated Security=True;Connect Timeout=30");
SqlCommand command = new SqlCommand("sp_helpdb", connection);
command.CommandType = CommandType.StoredProcedure;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
ddlDatabaseList.DataSource = reader;
ddlDatabaseList.DataTextField = "Name";
ddlDatabaseList.DataBind();
reader.Close();
connection.Close();
}
}
protected void btnOK_Click(object sender, EventArgs e)
{
string dbFileName = txtDbFileName.Text.Trim();
SqlConnection connection = new SqlConnection(@"Data Source=.;Integrated Security=True;Connect Timeout=30;User Instance=True");
string dbName = ddlDatabaseList.SelectedValue;
if (!dbFileName.EndsWith(".bak"))
{
dbFileName += ".bak";
}
if (rbBackup.Checked)//备份数据库
{
SqlCommand command = new SqlCommand("use master;backup database @name to disk=@path;", connection);
connection.Open();
string path = Server.MapPath("aa") + "" + dbFileName;
command.Parameters.AddWithValue("@name", dbName);
command.Parameters.AddWithValue("@path", path);
command.ExecuteNonQuery();
connection.Close();
Label1.Text = dbFileName + "数据库备份成功,要记住该文件名!";
}
else//恢复数据库
{
SqlCommand command = new SqlCommand("use master;restore database @name from disk=@path;", connection);
connection.Open();
string path = Server.MapPath("aa") + "" + dbFileName;
command.Parameters.AddWithValue("@name", dbName);
command.Parameters.AddWithValue("@path", path);
command.ExecuteNonQuery();
connection.Close();
Label1.Text = dbFileName + "数据库还原成功!";
}
}