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(); } }
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(); }
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); }
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 } } }
public void ConnectToServer() { _server = new SqlServerManager(_serverName,_instanceName); }
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(); } }
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); }
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); }
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); }