ADO.NET数据库备份

/// <summary>

/// 备份数据库

/// </summary>

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

{

       this.Cursor = Cursors.WaitCursor;

       this.label1.Text = "  正在进行档案库的数据备份,这可能需要几秒到几十的时间,请稍候...";

       this.label1.Visible = true;

       this.label1.Refresh();

       this.pBar1.Visible = true;

 

       string selfName = “D:/NorthwindBak“;

       string deviceName = “NorthwindBak“;

       string remark = "备份测试";

 

       //数据备份:

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

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

       oBackup.Action = 0 ;

       oBackup.Initialize = true ;

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

       oBackup.PercentComplete += pceh;

       try

       {

              oSQLServer.LoginSecure = false;

              oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");

              oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;

              oBackup.Database = "Northwind";//数据库名

              oBackup.Files = selfName;//文件路径

              oBackup.BackupSetName = deviceName;//备份名称

              oBackup.BackupSetDescription = remark;//备份描述

              oBackup.Initialize = true;

              oBackup.SQLBackup(oSQLServer);

 

       }

       catch(System.Exception ex)

       {

              Common.ShowMsg("数据备份失败:/n" + ex.ToString());

       }

       finally

       {

              oSQLServer.DisConnect();

       }

       //------------------------------------------------------------------------------------

       this.label1.Visible = false;

       this.pBar1.Visible = false;

       this.Cursor = Cursors.Default;

}

 

/// <summary>

/// 显示备份进度条

/// </summary>

private void Step(string message,int percent)

{

       this.pBar1.Value = percent ;

}

 

/// <summary>

/// 还原数据库

/// </summary>

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

{

       this.Cursor = Cursors.WaitCursor;

       this.label1.Text = "  正在进行档案库的数据还原,这可能需要几秒到几十的时间,请稍候...";

       this.label1.Visible = true;

       this.label1.Refresh();

       this.pBar1.Visible = true;

 

       string fileName = "NorthwindBak";

       string filePath = "D:/NorthwindBak";

       string remark = "备份测试";

       SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();

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

       oRestore.Action = 0 ;

       SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);

       oRestore.PercentComplete += pceh;

       try

       {

              oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");

              SQLDMO.QueryResults qr = oSQLServer.EnumProcesses(-1) ;

              int iColPIDNum = -1 ;

              int iColDbName = -1 ;

              //杀死其它的连接进程

              for(int i=1;i<=qr.Columns;i++)

              {

                     string strName = qr.get_ColumnName(i) ;

                     if (strName.ToUpper().Trim() == "SPID")

                     {

                         iColPIDNum = i ;

                     }

                     else if (strName.ToUpper().Trim() == "DBNAME")

                     {

                         iColDbName = i ;

                     }

                     if (iColPIDNum != -1 && iColDbName != -1)

                         break ;

              }

              for(int i=1;i<=qr.Rows;i++)

              {

                     int lPID = qr.GetColumnLong(i,iColPIDNum) ;

                     string strDBName = qr.GetColumnString(i,iColDbName) ;

                     if (strDBName.ToUpper() == "CgRecord".ToUpper())

                         oSQLServer.KillProcess(lPID) ;

              }

 

              oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;

              oRestore.Database = "Northwind";

              oRestore.Files = filePath;

              oRestore.FileNumber = 1;

              oRestore.ReplaceDatabase = true;

              oRestore.SQLRestore(oSQLServer);

       }

       catch(System.Exception ex)

       {

           Common.ShowMsg("数据还原失败:/n" + ex.ToString());

       }

       finally

       {

              oSQLServer.DisConnect();

       }

 

       this.label1.Visible = false;

       this.pBar1.Visible = false;

       this.Cursor = Cursors.Default;

}

 

/// <summary>

/// 显示还原进度条

/// </summary>

private void Step(string message,int percent)

{

       this.pBar1.Value = percent ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值