在asp.net中备份还原SQL Server数据库
在web中,安全性主要体现在两个方面:一个是程序安全性,即防止网页在插入恶意代码;另一个是数据库安全性,这个我们可以经常备份数据库来实现。在文中,我将演示如果在网页中备份和恢复数据库。
其实备份和恢复数据库都是利用SQL Server提供的SQL语句来备份的。
备份:use master;backup database @name to disk=@path;
恢复:use master;restore database @name from disk=@path;
上面用的是参数化SQL语句,可以在程序执行的时候动态给参数赋值。
代码:
[*]<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="DatabaseAction.aspx.cs"Inherits="DatabaseAction"%>
[*]
[*]<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
[*]
[*]<htmlxmlns="http://www.w3.org/1999/xhtml">
[*]<headrunat="server">
[*]<title>无标题页</title>
[*]</head>
[*]<body>
[*]<formid="form1"runat="server">
[*]<div>
[*]<tableborder="0"width="100%">
[*]<tr><tdcolspan="2">数据库还原和备份</td></tr>
[*]<tr><td>请选择数据库</td><td>
[*]<asp:DropDownListID="ddlDatabaseList"runat="server">
[*]</asp:DropDownList></td></tr>
[*]<tr><td>
[*]数据库文件名</td><td>
[*]<asp:TextBoxID="txtDbFileName"runat="server"></asp:TextBox></td></tr>
[*]<tr><td>
[*]操作选项</td><td>
[*]<asp:RadioButtonID="rbBackup"runat="server"Checked="True"GroupName="action"Text="备份"/>
[*]<asp:RadioButtonID="rbRestore"runat="server"GroupName="action"Text="还原"/></td></tr>
[*]<tr><td>
[*]操作</td><td>
[*]<asp:ButtonID="btnOK"runat="server"OnClick="btnOK_Click"Text="执行"/></td></tr>
[*]</table>
[*]</div>
[*]</form>
[*]</body>
[*]</html>
后台代码:
[*]usingSystem;
[*]usingSystem.Data;
[*]usingSystem.Configuration;
[*]usingSystem.Collections;
[*]usingSystem.Web;
[*]usingSystem.Web.Security;
[*]usingSystem.Web.UI;
[*]usingSystem.Web.UI.WebControls;
[*]usingSystem.Web.UI.WebControls.WebParts;
[*]usingSystem.Web.UI.HtmlControls;
[*]usingSystem.Data.SqlClient;
[*]
[*]///<summary>
[*]///功能说明:本例中演示在asp.net中如何备份和恢复数据库
[*]///备份数据库主要使用数据库的备份语句。数据库备份文件放在
[*]///App_Data文件夹下。
[*]///作者:周公
[*]///日期:2008-08-19
[*]///首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/08/19/2796077.aspx
[*]///</summary>
[*]publicpartialclassDatabaseAction:System.Web.UI.Page
[*]{
[*]protectedvoidPage_Load(objectsender,EventArgse)
[*]{
[*]if(!Page.IsPostBack)
[*]{
[*]//在DropDownList中绑定所有数据库
[*]SqlConnectionconnection=newSqlConnection("DataSource=ZHOUFOXCN;UserID=sa;Password=sa");
[*]SqlCommandcommand=newSqlCommand("sp_helpdb",connection);
[*]command.CommandType=CommandType.StoredProcedure;
[*]connection.Open();
[*]SqlDataReaderreader=command.ExecuteReader();
[*]ddlDatabaseList.DataSource=reader;
[*]ddlDatabaseList.DataTextField="Name";
[*]ddlDatabaseList.DataBind();
[*]reader.Close();
[*]connection.Close();
[*]}
[*]}
[*]protectedvoidbtnOK_Click(objectsender,EventArgse)
[*]{
[*]stringdbFileName=txtDbFileName.Text.Trim();
[*]SqlConnectionconnection=newSqlConnection("DataSource=ZHOUFOXCN;UserID=sa;Password=sa");
[*]stringdbName=ddlDatabaseList.SelectedValue;
[*]if(!dbFileName.EndsWith(".bak"))
[*]{
[*]dbFileName+=".bak";
[*]}
[*]if(rbBackup.Checked)//备份数据库
[*]{
[*]SqlCommandcommand=newSqlCommand("usemaster;backupdatabase@nametodisk=@path;",connection);
[*]connection.Open();
[*]stringpath=Server.MapPath("~//App_Data")+"//"+dbFileName;
[*]command.Parameters.AddWithValue("@name",dbName);
[*]command.Parameters.AddWithValue("@path",path);
[*]command.ExecuteNonQuery();
[*]connection.Close();
[*]}
[*]else//恢复数据库
[*]{
[*]SqlCommandcommand=newSqlCommand("usemaster;restoredatabase@namefromdisk=@path;",connection);
[*]connection.Open();
[*]stringpath=Server.MapPath("~//App_Data")+"//"+dbFileName;
[*]command.Parameters.AddWithValue("@name",dbName);
[*]command.Parameters.AddWithValue("@path",path);
[*]command.ExecuteNonQuery();
[*]connection.Close();
[*]}
[*]}
[*]}
以上代码在WindowsXP+VisualStudio2005+SQL Server2000下测试通过
页:
[1]