private void btnRestoreDB_Click(object sender, EventArgs e) { this.ButtonClicked(btnRestoreDB); ClearStatusMessage(); try { var error = ValidateForRestore(); if (error != null) { ShowWarningDialog(error.MessageId, error.MessageArgs); if (error.FocusTargetControl != null) { error.FocusTargetControl.Focus(); } return; } if (!ShowConfirmDialog(MsgQstConfirmDBRestore)) { return; } FunctionError restoreError = null; var restoreTask = Task.Run(() => { restoreError = RestoreDatabase(txtDBRestoreFilePath.Text); }); ProgressDialog.Start(BaseForm, restoreTask, false, SessionKey); if (restoreError != null) { ShowWarningDialog(restoreError.MessageId, restoreError.MessageArgs); return; } ShowConfirmDialog(MsgInfFinishRestoreDb, "システムを終了します。"); Application.Exit(); } catch (Exception ex) { ShowWarningDialog(MsgErrDBRestoreError); NLogHandler.WriteErrorLog(this, ex, SessionKey); } }
private void btnBackupDB_Click(object sender, EventArgs e) { this.ButtonClicked(btnBackupDB); ClearStatusMessage(); try { var error = ValidateForBackup(); if (error != null) { ShowWarningDialog(error.MessageId, error.MessageArgs); if (error.FocusTargetControl != null) { error.FocusTargetControl.Focus(); } return; } if (!ShowConfirmDialog(MsgQstConfirmDBBackup)) { return; } FunctionError backupError = null; var backupTask = Task.Run(() => { backupError = BackupDatabase(txtDBBackupFilePath.Text); }); ProgressDialog.Start(BaseForm, backupTask, false, SessionKey); if (backupError != null) { ShowWarningDialog(backupError.MessageId, backupError.MessageArgs); return; } ShowWarningDialog(MsgInfFinishDbBackup); } catch (Exception ex) { ShowWarningDialog(MsgErrDBBackupError); NLogHandler.WriteErrorLog(this, ex, SessionKey); } }
private void btnDeleteData_Click(object sender, EventArgs e) { ClearStatusMessage(); try { var error = ValidateForDeletion(); if (error != null) { ShowWarningDialog(error.MessageId, error.MessageArgs); if (error.FocusTargetControl != null) { error.FocusTargetControl.Focus(); } return; } if (!ShowConfirmDialog(MsgQstConfirmDelete)) { return; } FunctionError deleteError = null; var deleteTask = Task.Run(() => { deleteError = DeleteDataBefore(datDeleteDate.Value.Value); }); ProgressDialog.Start(BaseForm, deleteTask, false, SessionKey); if (deleteError != null) { ShowWarningDialog(deleteError.MessageId, deleteError.MessageArgs); return; } ShowWarningDialog(MsgInfDeleteUnnecessaryData); } catch (Exception ex) { ShowWarningDialog(MsgErrUnneededDataDeleteError); ex.Data["DeleteDate"] = datDeleteDate.Value; NLogHandler.WriteErrorLog(this, ex, SessionKey); } }
private FunctionError RestoreDatabase(string backupFilePath) { var maintConnection = GetDataMaintenanceConnctionString(GetAppSettingsValue("IsRestoreBySqlUser", true)); using (var conn = new SqlConnection(maintConnection.ConnectionString)) { var database = new SqlConnectionStringBuilder(ConnectionString).InitialCatalog; try { conn.Open(); var command = conn.CreateCommand(); command.CommandTimeout = 0; command.CommandText = $@" ALTER DATABASE {database} SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE {database} FROM DISK = N'{backupFilePath}' WITH FILE = 1, UNLOAD, REPLACE, STATS = 10; ALTER DATABASE {database} SET MULTI_USER; "; command.ExecuteNonQuery(); } catch (SqlException ex) { FunctionError error; switch (ex.Number) { case 3101: // データベース使用中 error = new FunctionError(MsgWngOtherAppliUsingDBandCannotBkOrRestore, "DBのリストア"); break; case 3201: // フォルダアクセス不可 error = new FunctionError(MsgErrUnauthorizedAccessTargetFolder); break; case 2: // サーバ接続不可 case 942: // データベースオフライン case 4060: // Open不可 case 18456: // ユーザ名またはパスワード error = new FunctionError(MsgErrServerLoginError); break; case 262: // 権限なし (ALTER DATABASE / RESTORE DATABASE) case 5058: // 設定不可 (SINGLE_USER) default: error = new FunctionError(MsgErrDBRestoreError); break; } ex.Data["Number"] = ex.Number; ex.Data["txtDBRestoreFilePath.Text"] = txtDBRestoreFilePath.Text; NLogHandler.WriteErrorLog(this, ex, SessionKey); return(error); } catch (Exception ex) { NLogHandler.WriteErrorLog(this, ex, SessionKey); return(new FunctionError(MsgErrDBRestoreError)); } finally { conn.Close(); } return(null); } }
private FunctionError BackupDatabase(string backupFilePath) { var maintConnection = GetDataMaintenanceConnctionString(GetAppSettingsValue("IsBackUpBySqlUser", true)); using (var conn = new SqlConnection(maintConnection.ConnectionString)) { var database = new SqlConnectionStringBuilder(ConnectionString).InitialCatalog; try { conn.Open(); var command = conn.CreateCommand(); command.CommandTimeout = 0; command.CommandText = $@" BACKUP DATABASE {database} TO DISK = N'{backupFilePath}' WITH NOFORMAT, INIT, NAME = N'{database}-完全データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10 "; command.ExecuteNonQuery(); } catch (SqlException ex) { FunctionError error; switch (ex.Number) { case 3101: // データベース使用中 error = new FunctionError(MsgWngOtherAppliUsingDBandCannotBkOrRestore, "DBのバックアップ"); break; case 3201: // フォルダアクセス不可 error = new FunctionError(MsgErrUnauthorizedAccessTargetFolder); break; case 2: // サーバ接続不可 case 942: // データベースオフライン case 4060: // Open不可 case 18456: // ユーザ名またはパスワード error = new FunctionError(MsgErrServerLoginError); break; case 262: // 権限なし (BACKUP DATABASE) default: error = new FunctionError(MsgErrDBBackupError); break; } ex.Data["Number"] = ex.Number; ex.Data["txtDBBackupFilePath.Text"] = txtDBBackupFilePath.Text; NLogHandler.WriteErrorLog(this, ex, SessionKey); return(error); } catch (Exception ex) { NLogHandler.WriteErrorLog(this, ex, SessionKey); return(new FunctionError(MsgErrDBBackupError)); } finally { conn.Close(); } return(null); } }