C#实现数据库备份(以Sql Server为例)

  • Post author:
  • Post category:其他


今天做了一个用.net 写的Sql Server的备份程序。点击“备份”按钮后,对指定的数据库进行备份操作。

程序如下:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Windows.Forms;

namespace ZZTest.Test

{


/// <summary>

/// TestBak 的摘要说明。

/// </summary>

public class TestBak : System.Web.UI.Page

{


protected System.Web.UI.WebControls.Button btBak;

protected System.Web.UI.WebControls.Button btRecover;

private void Page_Load(object sender, System.EventArgs e)

{


// 在此处放置用户代码以初始化页面

}

#region Web 窗体设计器生成的代码

override protected void OnInit(EventArgs e)

{


//

// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

/// <summary>

/// 设计器支持所需的方法 – 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void InitializeComponent()

{

this.btBak.Click += new System.EventHandler(this.btBak_Click);

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

private void Step(string message,int percent)

{


ProgressBar PBar = new ProgressBar();

PBar.Visible = true;

PBar.Value=percent;

}

private void btBak_Click(object sender, System.EventArgs e)

{


SQLDMO.Backup backup = new SQLDMO.BackupClass();

SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();

SQLDMO.BackupSink_PercentCompleteEventHandler progress = new  SQLDMO.BackupSink_PercentCompleteEventHandler(Step);

backup.PercentComplete += progress;

try

{


server.LoginSecure = false;

server.Connect(“.”, “sa”, “”);//三个参数分别为数据库服务器,登录名,密码

backup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;

backup.Database = “gentledsb”; //要备份的数据库名称

backup.Files = @”D:/DataBak/gentledsb” + System.DateTime.Now.ToShortDateString(); //备份出的数据库的路径(含数据库名称)

backup.BackupSetName = “gentledsb”;

backup.BackupSetDescription = “数据备份中,请稍候……”;

backup.Initialize = true;

backup.SQLBackup(server);

Response.Write(“备份完成!”);

}

catch(Exception ex)

{


throw new Exception(ex.Message);

}

finally

{


server.DisConnect();

}

}

}

}

需要注意的问题:

1.在项目中添加引用:SQLDMO.DLL和System.Window.Form.dll

2.该程序从表面看应该是显示出备份时的进度条,但是我运行之后数据库进行备份是成功的,但是不显示进度条,如果各位有何高见,还请不吝赐教,帮小弟解决一下这个问题。



版权声明:本文为InHappy1314原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。