Пример #1
0
        private void Backup(SqlServerManager SqlServerManager)
        {
            try
            {
                SqlServerManager.FullBackUp("ShayanDentalDB", _registrySettingManager.FullBackUpFirstPath);
            }
            catch (BackupException exp)
            {
                Logger.Log(exp, "Backup Error : " + exp.BackupExceptionType.ToString());

                if (exp.BackupExceptionType == BackupExceptionType.InvalidPath)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Error, "خطا",
                                               "برای تهیه پشتیبان مسیری مشخص نشده است، در قسمت تنظیمات مسیر ذخیره پشتیبان را مشخص نمایید.");
                }
                else if (exp.BackupExceptionType == BackupExceptionType.AbnormalStatus)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا",
                                               "در حال حاضر نمی توان پشتیبان را تهیه کرد. مجددا تلاش کنید.");
                }

                InitFrom();
            }
            catch (Exception exp)
            {
                Logger.Log(exp, "Unhandled Backup Error");
                Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا",
                                               "خطایی به هنگام تهیه فایل پشتیبان از داده ها رخ داد.");

                InitFrom();
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            /*
            if (SqlServerInstance.SqlBrowser.StartMode != ServiceStartMode.Auto)
            {
                SqlServerInstance.SqlBrowser.StartMode = ServiceStartMode.Auto;
                SqlServerInstance.SqlBrowser.Alter();
            }

            if (SqlServerInstance.SqlBrowser.ServiceState != ServiceState.Running)
            {
                SqlServerInstance.SqlBrowser.Start();
                while (SqlServerInstance.SqlBrowser.ServiceState != ServiceState.Running)
                {
                    SqlServerInstance.SqlBrowser.Refresh();
                    Thread.Sleep(200);
                }
            }

            SqlServerInstance expressInstance=new SqlServerInstance("sqlexpress",".","sqlexpress","11",true);

            if (SqlServerInstance.SqlExpress.StartMode != ServiceStartMode.Auto)
            {
                SqlServerInstance.SqlExpress.StartMode = ServiceStartMode.Auto;
                SqlServerInstance.SqlExpress.Alter();
            }

            if (SqlServerInstance.SqlExpress.ServiceState == ServiceState.Running)
            {
                SqlServerInstance.SqlExpress.Stop();
                while (SqlServerInstance.SqlExpress.ServiceState != ServiceState.Stopped)
                {
                    SqlServerInstance.SqlExpress.Refresh();
                    Thread.Sleep(200);
                }
            }

            SqlServerInstance.SqlExpress.Start();
            while (SqlServerInstance.SqlExpress.ServiceState != ServiceState.Running)
            {
                SqlServerInstance.SqlExpress.Refresh();
                Thread.Sleep(200);
            }

            sm.CreateScript("ShayanDentalDB","shayanScripts.sql");
             */

            Console.ReadLine();

            SqlServerManager SqlServerManager =
                            new SqlServerManager("192.168.1.3", "sqlexpress", "shayandental", "ashnaco");

            //SqlServerManager.Restore("ShayanDentalDB", @"D:\FullShayanDentalMain.bak",null,"ShayanDentalDB",,"ShayanDentalDb");

            Console.ReadLine();
        }
Пример #3
0
        public WindowsService()
        {
            smsTimer = new Timer();
            diffTimer = new Timer();
            fullTimer = new Timer();
            registery = new RegistrySettingManager();
            sqlserverManagment = new SqlServerManager(registery.SqlServer, registery.SqlServerInstance);

            file.AutoFlush = true;
            file.WriteLine("service newed");
            // timer for sms
            smsTimer.Interval = 12 * 60 * 60 * 1000;//har 12 saat
            smsTimer.AutoReset = true;
            smsTimer.Enabled = true;
            smsTimer.Elapsed += (x, y) => onSmsTimerElapsed();
            // timer for diff backup
            diffTimer.Interval = 60 * 1000;//har 1 daghighe
            diffTimer.AutoReset = true;
            diffTimer.Enabled = true;
            diffTimer.Elapsed += (x, y) => {
                if (registery.AutomaticBackup
                    && registery.LastDiffBackUpTime.HasValue
                    && (DateTime.Now - registery.LastDiffBackUpTime.Value).TotalHours >= registery.DiffBackUpPeriod
                    )
                onDiffTimerElapsed();
            };
            // timer for full backup
            fullTimer.Interval = 60*60*1000;//har 1 saat
            fullTimer.AutoReset = true;
            fullTimer.Enabled = true;
            fullTimer.Elapsed += (x, y) =>
            {
                if (registery.AutomaticBackup
                    && registery.LastFullBackUpTime.HasValue
                    && (DateTime.Now - registery.LastFullBackUpTime.Value).TotalDays == registery.FullBackUpPeriod
                    && DateTime.Parse(registery.FullBackUpTime).TimeOfDay >= DateTime.Now.TimeOfDay)
                    onFullTimerElapsed();
            };

            this.Disposed += (x, y) => { smsTimer.Dispose(); fullTimer.Dispose(); diffTimer.Dispose(); file.Close(); };

            //service setting
            this.ServiceName = "ShayanDentalBackUp";
            this.EventLog.Log = "Application";
            this.CanHandlePowerEvent = true;
            this.CanHandleSessionChangeEvent = true;
            this.CanPauseAndContinue = true;
            this.CanShutdown = true;
            this.CanStop = true;

            file.WriteLine("service new" + DateTime.Now);
        }
Пример #4
0
        static void Main(string[] args)
        {
            RegistrySettingManager registery = new RegistrySettingManager();
            SqlServerManager sqlserverManagment = new SqlServerManager(registery.SqlServer, registery.SqlServerInstance);

            if (args.Length > 0 && args[0] == "ShayanDentalService")
            {
                if(args[1]=="SMS")
                    new SendSmsReminder();
                else if(args[1]=="Full"){
                    sqlserverManagment.FullBackUp("ShayanDentalDB", registery.FullBackUpFirstPath);
                    //todo copy
                }
                else if (args[2] == "Diff")
                {
                    sqlserverManagment.DifferentialBackUp("ShayanDentalDB", registery.FullBackUpFirstPath);
                    //todo copy
                }
            }
        }
Пример #5
0
 public void ConnectToServer()
 {
     _server = new SqlServerManager(_serverName,_instanceName);
 }
Пример #6
0
        private void Restore(SqlServerManager SqlServerManager)
        {
            try
            {
                string dbPath = Path.Combine(_registrySettingManager.InstallLocation,@"Database\ShayanDentalDB.mdf");
                string logPath = Path.Combine(_registrySettingManager.InstallLocation,@"Database\ShayanDentalDB_log.ldf");
                SqlServerManager.Restore("ShayanDentalDB", _registrySettingManager.FullBackUpFirstPath, _registrySettingManager.DiffBackUpFirstPath
                    ,"ShayanDentalDB",dbPath,"ShayanDentalDB_log",logPath);
            }
            catch (RestoreException exp)
            {
                Logger.Log(exp, "Restore Error : " + exp.RestoreExceptionType.ToString());

                if (exp.RestoreExceptionType == RestoreExceptionType.InvalidDiffBackupPath
                    || exp.RestoreExceptionType == RestoreExceptionType.InvalidFullBackupPath)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Error, "خطا",
                                               "برای تهیه پشتیبان مسیری مشخص نشده است، در قسمت تنظیمات مسیر ذخیره پشتیبان را مشخص نمایید.");
                }
                else if (exp.RestoreExceptionType == RestoreExceptionType.ActiveConnection)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا", "پایگاه داده در حال استفاده می باشد. پیش از بازیابی باید تمامی ارتباط ها با پایگاه داده بسته شوند.");
                }
                else if (exp.RestoreExceptionType == RestoreExceptionType.NoFullBackupFile)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا", "هیج فایل پشتیبانی برای بازیابی پایگاه داده یافت نشد.");
                }
                else if (exp.RestoreExceptionType == RestoreExceptionType.InvalidFullBackup || exp.RestoreExceptionType == RestoreExceptionType.InvalidDiffBackup)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا",
                                               "فایل های پشتیبانی مخدوش می باشند. متاسفانه امکان بازیابی داده ها وجود ندارد.");
                }
                else if (exp.RestoreExceptionType == RestoreExceptionType.AbnormalStatus)
                {
                    Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا",
                                               "پایگاه داده در حالت پایداری قرار ندارد. امکان بازیابی داده ها وجود ندارد.");
                }

                InitFrom();
            }
            catch(Exception exp)
            {
                Logger.Log(exp, "Unhandled Restore Error");
                Methods.ShowStandardMsgBox(FormMessageType.Information, "خطا",
                                               "خطایی به هنگام بازیابی داده ها رخ داد.");

                InitFrom();
            }
        }
Пример #7
0
        private void MakeFormReadyForRestore(SqlServerManager SqlServerManager)
        {
            pbRestore.Visible = true;
            btnBackup.Enabled = false;
            btnRestore.Enabled = false;

            SqlServerManager.RestoreCompeleted += new SqlServerManager.RestoreCompeletedEventHandler(SqlServerManager_RestoreCompeleted);
            SqlServerManager.RestoreProgressChanged += new SqlServerManager.RestoreProgressChangedEventHandler(SqlServerManager_RestoreProgressChanged);
        }
Пример #8
0
        private void btnBackup_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = Methods.ShowStandardMsgBox(FormMessageType.Question, "هشدار",
                                                                   "آیا از تهیه  پشتیبان اطمینان دارید؟");

            if (dialogResult == DialogResult.No)
                return;

            SqlServerManager sqlServerManager =
                new SqlServerManager(".", _registrySettingManager.SqlServerInstance);

            MakeFormReadyForBackup(sqlServerManager);
            Backup(sqlServerManager);
        }
Пример #9
0
        private void btnRestore_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = Methods.ShowStandardMsgBox(FormMessageType.Question, "هشدار", "آیا مایل به بازیابی اطلاعات هستید؟");

            if (dialogResult == DialogResult.No)
                return;

            SqlServerManager sqlServerManager =
                new SqlServerManager(".", _registrySettingManager.SqlServerInstance);

            MakeFormReadyForRestore(sqlServerManager);
            Restore(sqlServerManager);
        }