在asp.net中备份还原SQL Server数据库

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

在web中,安全性主要体现在两个方面:一个是程序安全性,即防止网页在插入恶意代码;另一个是数据库安全性,这个我们可以经常备份数据库来实现。
在文中,我将演示如果在网页中备份和恢复数据库。
其实备份和恢复数据库都是利用SQL Server提供的SQL语句来备份的。
备份:use master;backup database @name to disk=@path;
恢复:use master;restore database @name from disk=@path;
上面用的是参数化SQL语句,可以在程序执行的时候动态给参数赋值。

代码:

  1. <%@PageLanguage="C#"AutoEventWireup="true"CodeFile="DatabaseAction.aspx.cs"Inherits="DatabaseAction"%>
  2. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <htmlxmlns="http://www.w3.org/1999/xhtml">
  4. <headrunat="server">
  5. <title>无标题页</title>
  6. </head>
  7. <body>
  8. <formid="form1"runat="server">
  9. <div>
  10. <tableborder="0"width="100%">
  11. <tr><tdcolspan="2">数据库还原和备份</td></tr>
  12. <tr><td>请选择数据库</td><td>
  13. <asp:DropDownListID="ddlDatabaseList"runat="server">
  14. </asp:DropDownList></td></tr>
  15. <tr><td>
  16. 数据库文件名</td><td>
  17. <asp:TextBoxID="txtDbFileName"runat="server"></asp:TextBox></td></tr>
  18. <tr><td>
  19. 操作选项</td><td>
  20. <asp:RadioButtonID="rbBackup"runat="server"Checked="True"GroupName="action"Text="备份"/>
  21. <asp:RadioButtonID="rbRestore"runat="server"GroupName="action"Text="还原"/></td></tr>
  22. <tr><td>
  23. 操作</td><td>
  24. <asp:ButtonID="btnOK"runat="server"OnClick="btnOK_Click"Text="执行"/></td></tr>
  25. </table>
  26. </div>
  27. </form>
  28. </body>
  29. </html>

后台代码:

  1. usingSystem;
  2. usingSystem.Data;
  3. usingSystem.Configuration;
  4. usingSystem.Collections;
  5. usingSystem.Web;
  6. usingSystem.Web.Security;
  7. usingSystem.Web.UI;
  8. usingSystem.Web.UI.WebControls;
  9. usingSystem.Web.UI.WebControls.WebParts;
  10. usingSystem.Web.UI.HtmlControls;
  11. usingSystem.Data.SqlClient;
  12. ///<summary>
  13. ///功能说明:本例中演示在asp.net中如何备份和恢复数据库
  14. ///备份数据库主要使用数据库的备份语句。数据库备份文件放在
  15. ///App_Data文件夹下。
  16. ///作者:周公
  17. ///日期:2008-08-19
  18. ///首发地址:http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/08/19/2796077.aspx
  19. ///</summary>
  20. publicpartialclassDatabaseAction:System.Web.UI.Page
  21. {
  22. protectedvoidPage_Load(objectsender,EventArgse)
  23. {
  24. if(!Page.IsPostBack)
  25. {
  26. //在DropDownList中绑定所有数据库
  27. SqlConnectionconnection=newSqlConnection("DataSource=ZHOUFOXCN;UserID=sa;Password=sa");
  28. SqlCommandcommand=newSqlCommand("sp_helpdb",connection);
  29. command.CommandType=CommandType.StoredProcedure;
  30. connection.Open();
  31. SqlDataReaderreader=command.ExecuteReader();
  32. ddlDatabaseList.DataSource=reader;
  33. ddlDatabaseList.DataTextField="Name";
  34. ddlDatabaseList.DataBind();
  35. reader.Close();
  36. connection.Close();
  37. }
  38. }
  39. protectedvoidbtnOK_Click(objectsender,EventArgse)
  40. {
  41. stringdbFileName=txtDbFileName.Text.Trim();
  42. SqlConnectionconnection=newSqlConnection("DataSource=ZHOUFOXCN;UserID=sa;Password=sa");
  43. stringdbName=ddlDatabaseList.SelectedValue;
  44. if(!dbFileName.EndsWith(".bak"))
  45. {
  46. dbFileName+=".bak";
  47. }
  48. if(rbBackup.Checked)//备份数据库
  49. {
  50. SqlCommandcommand=newSqlCommand("usemaster;backupdatabase@nametodisk=@path;",connection);
  51. connection.Open();
  52. stringpath=Server.MapPath("~//App_Data")+"//"+dbFileName;
  53. command.Parameters.AddWithValue("@name",dbName);
  54. command.Parameters.AddWithValue("@path",path);
  55. command.ExecuteNonQuery();
  56. connection.Close();
  57. }
  58. else//恢复数据库
  59. {
  60. SqlCommandcommand=newSqlCommand("usemaster;restoredatabase@namefromdisk=@path;",connection);
  61. connection.Open();
  62. stringpath=Server.MapPath("~//App_Data")+"//"+dbFileName;
  63. command.Parameters.AddWithValue("@name",dbName);
  64. command.Parameters.AddWithValue("@path",path);
  65. command.ExecuteNonQuery();
  66. connection.Close();
  67. }
  68. }
  69. }

以上代码在WindowsXP+VisualStudio2005+SQL Server2000下测试通过

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值