在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.youkuaiyun.com/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下测试通过
本文介绍了一个在ASP.NET环境中实现数据库备份和恢复的功能。通过代码演示了如何利用SQL Server提供的SQL语句来操作数据库文件,包括备份到指定路径及从备份文件恢复数据库。重点展示了备份和恢复数据库的基本步骤,以及关键代码实现。
97

被折叠的 条评论
为什么被折叠?



