设为首页 收藏本站
查看: 588|回复: 0

[经验分享] 在asp.net中备份还原SQL Server数据库

[复制链接]

尚未签到

发表于 2016-11-4 02:08:51 | 显示全部楼层 |阅读模式
  在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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-295269-1-1.html 上篇帖子: SQL SERVER数据库置疑后恢复步骤 下篇帖子: 利用SQL Server复制技术实现数据同步更新
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表