Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
            }
        }