犀利小胖

 

C#技术 在.NET页面中实现控件备份与还原

 

 



核心SQL语句:

备份:use master;backup database @name to disk=@path;
恢复:use master;restore database @name from disk=@path;

 DatabaseAction.aspx  源

 

DatabaseAction.aspx
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DatabaseAction.aspx.cs" Inherits="DatabaseAction" %> 
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title>在asp.net中备份还原SQL Server数据库_IT知道网_itwis.com</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <div>
12 <table border="0" width="100%">
13 <tr><td colspan="2">数据库还原和备份</td></tr>
14 <tr><td>请选择数据库</td><td>
15 <asp:DropDownList ID="ddlDatabaseList" runat="server">
16 </asp:DropDownList></td></tr>
17 <tr><td>
18 数据库文件名</td><td>
19 <asp:TextBox ID="txtDbFileName" runat="server"></asp:TextBox></td></tr>
20 <tr><td>
21 操作选项</td><td>
22 <asp:RadioButton ID="rbBackup" runat="server" Checked="True" GroupName="action" Text="备份" />
23 <asp:RadioButton ID="rbRestore" runat="server" GroupName="action" Text="还原" /></td></tr>
24 <tr><td>
25 操作</td><td>
26 <asp:Button ID="btnOK" runat="server" OnClick="btnOK_Click" Text="执行" /></td></tr>
27 </table>
28 </div>
29 </form>
30 </body>
31 </html>
32
33
34 本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/net/net20/20081103/2685.html

 

 

 

 

DatabaseAction.aspx.cs  编码

administrator_copybase.aspx.cs
 1 using System; 
2 using System.Data;
3 using System.Configuration;
4 using System.Collections;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11 using System.Data.SqlClient;
12 using Microsoft.Office.Core;
13 using Microsoft.Office.Interop;
14
15
16
17
18
19 public partial class administrator_copybase : System.Web.UI.Page
20 {
21 protected void Page_Load(object sender, EventArgs e)
22 {
23
24 if (!Page.IsPostBack)
25 {
26 //在DropDownList中绑定所有数据库
27 SqlConnection connection = new SqlConnection();
28 string strConn = "Data Source=localhost;Integrated Security=True";
29 connection.ConnectionString = strConn;
30 SqlCommand command = new SqlCommand("sp_helpdb", connection);
31 command.CommandType = CommandType.StoredProcedure;
32 connection.Open();
33 SqlDataReader reader = command.ExecuteReader();
34 ddlDatabaseList.DataSource = reader;
35 ddlDatabaseList.DataTextField = "Name";
36 ddlDatabaseList.DataBind();
37 reader.Close();
38 connection.Close();
39 //SqlConnection connection = new SqlConnection("Data Source=localhost;User ID=sa;Password=sa");
40 //SqlCommand command = new SqlCommand("sp_helpdb", connection);
41 //command.CommandType = CommandType.StoredProcedure;
42 //connection.Open();
43 //SqlDataReader reader = command.ExecuteReader();
44 //ddlDatabaseList.DataSource = reader;
45 //ddlDatabaseList.DataTextField = "Name";
46 //ddlDatabaseList.DataBind();
47 //reader.Close();
48 //connection.Close();
49 }
50 }
51 protected void btnOK_Click(object sender, EventArgs e)
52 {
53 string dbFileName = txtDbFileName.Text.Trim();//存储数据库文件的名字
54 SqlConnection connection = new SqlConnection();
55 string strConn = "Data Source=localhost;Initial Catalog=references; Integrated Security=True";
56 connection.ConnectionString = strConn;
57
58 string dbName = ddlDatabaseList.Text;//数据库名字
59 //SqlConnection connection = new SqlConnection("Data Source=localhost;User ID=sa;Password=sa");
60 // string dbName = ddlDatabaseList.SelectedValue;
61 if (!dbFileName.EndsWith(".bak"))
62 {
63 dbFileName += ".bak";
64 }
65 if (rbBackup.Checked)//备份数据库
66 {
67 SqlCommand command = new SqlCommand("use master;backup database @name to disk=@path;",connection);
68 connection.Open();
69 string path=Server.MapPath("~\\App_Data")+"\\"+dbFileName;
70 command.Parameters.AddWithValue("@name", dbName);
71 command.Parameters.AddWithValue("@path", path);
72 command.ExecuteNonQuery();
73 connection.Close();
74 Response.Write("<script language=javascript>alert('备份成功!')</script>");
75 }
76 else//恢复数据库
77 {
78 SqlCommand command = new SqlCommand("use master;restore database @name from disk=@path;", connection);
79 connection.Open();
80 string path = Server.MapPath("~\\App_Data") + "\\" + dbFileName;
81 command.Parameters.AddWithValue("@name", dbName);
82 command.Parameters.AddWithValue("@path", path);
83 command.ExecuteNonQuery();
84 connection.Close();
85 Response.Write("<script language=javascript>alert('还原成功!')</script>");
86 }
87 }
88 }



 

path是当前项目的那一级目录的路径

administrator_copybase.cs

这里避免了用sa不能与数据库相连接的可能性,采用的是本地的localhost的服务器来链接数据库的,备份可以在服务器运行的时候进行,还原的效果还有待考证,但测试中仍然又小问题。会继续更新最新技术,请大家关注!

 

另外的一些靠代码编写的网站链接如下,方便参考:

http://www.itwis.com/html/net/net20/20081103/2685.html

http://www.cnblogs.com/Terrylee/archive/2005/10/13/253667.html

 

posted on 2011-09-26 12:08  犀利小胖  阅读(279)  评论(0编辑  收藏  举报

导航