private void button7_Click_1(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtDbSourceName.Text)) { MessageTip("请输入数据源名称"); return; } if (string.IsNullOrEmpty(rtxDbConnStr.Text)) { MessageTip("请输入数据链接字符串"); return; } string errorMsg = string.Empty; if (SqlHelper.IsConnection(out errorMsg)) { MessageTip(errorMsg); rtxDbConnStr.Enabled = false; txtDbSourceName.Enabled = false; isConnection = true; var dbList = new BackupDbDal().GetAllDbName(); cbBackupDb.DataSource = dbList; cbBackupDb.ValueMember = "Id"; cbBackupDb.DisplayMember = "Name"; cbRestoreDb.DataSource = dbList; cbRestoreDb.ValueMember = "Id"; cbRestoreDb.DisplayMember = "Name"; } else { MessageError("数据库链接失败,原因:" + errorMsg); } }
private void button10_Click(object sender, EventArgs e) { if (!isConnection) { MessageTip("请选确认数据库链接状态"); return; } if (string.IsNullOrEmpty(txtRestoreFile.Text)) { MessageTip("请确认您要还原的数据库备份文件"); return; } RunBackGroudWork((o, e1) => { var bk = o as BackgroundWorker; bk.ReportProgress(5, "开始还原数据库,请稍等..."); bk.ReportProgress(15, "正在链接数据库服务器,请稍等..."); var dbConfigInfo = _dbConfigInfoDal.GetDbConfigInfo(txtDbSourceName.Text.Trim()); if (dbConfigInfo == null) { if (string.IsNullOrEmpty(cbBackupDb.Text)) { MessageTip("请选择您要备份的数据库"); return; } return; } var backupDal = new BackupDbDal(); try { string linkErrMsg = String.Empty; if (!backupDal.LinkDbService(dbConfigInfo.DbSourceAddress, dbConfigInfo.DbSourceServiceName, dbConfigInfo.DbSourceServicePwd, out linkErrMsg)) { bk.ReportProgress(100, "数据服务器当前无权执行远程备份,请与DBA联系..."); MessageError(linkErrMsg); return; } bk.ReportProgress(30, "数据库服务器链接成功"); bk.ReportProgress(65, "正在从本地的拷贝数据库文件到服务器,请稍等..."); File.Copy(txtRestoreFile.Text, string.Format("Z:\\{0}", Path.GetFileName(txtRestoreFile.Text))); bk.ReportProgress(75, "数据库文件拷贝成功"); bk.ReportProgress(80, "正在还原数据库,请稍等..."); backupDal.RestoreDb(cbRestoreDb.Text, string.Format("Z:\\{0}", Path.GetFileName(txtRestoreFile.Text))); bk.ReportProgress(89, "数据库还原成功"); bk.ReportProgress(90, "正在从服务端清理备份数据,请稍等..."); File.Delete(string.Format("Z:\\{0}", Path.GetFileName(txtRestoreFile.Text))); bk.ReportProgress(90, "服务器备份数据清理成功"); bk.ReportProgress(91, "正在删除服务器链接,请稍等..."); backupDal.RomoveLink(); bk.ReportProgress(95, "服务器链接删除成功"); bk.ReportProgress(100, "还原成功"); } catch (Exception ex) { MessageError(ex.Message); } finally { try { if (File.Exists(string.Format("Z:\\{0}", Path.GetFileName(txtRestoreFile.Text)))) { File.Delete(string.Format("Z:\\{0}", Path.GetFileName(txtRestoreFile.Text))); } backupDal.RomoveLink(); } catch (Exception exception) { } } }); }