Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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)
                    {
                    }
                }
            });
        }