示例#1
0
        static void Main(string[] args)
        {
            var             sett               = Properties.Settings.Default;
            string          SourceServer       = sett.SourceServer;
            string          TargetServer       = sett.TargetServer;
            string          SourceFolderShared = sett.SourceFolderShared;
            string          TargetFolderShared = sett.TargetFolderShared;
            bool            IsSourceServer     = sett.IsSourceServer;
            var             SourceFileList     = sett.SourceFile;
            string          SourceFile;
            string          SourceDB                  = "TEST";  //sett.ListDB;
            string          TargetDB                  = "TEST2"; //sett.TargetDB;
            var             list                      = sett.ListDB;
            bool            IsDeleteSourceBackup      = sett.IsDeleteSourceBackup;
            bool            IsDeleteTargetBackup      = sett.IsDeleteTargetBackup;
            string          MoveTo                    = sett.MoveTo;
            string          MailServer                = sett.MailServer;
            string          MailAddressTo             = sett.MailAddressTo;
            string          MailAddressFrom           = sett.MailAddressFrom;
            bool            IsMail                    = sett.IsMail;
            bool            IsCopySource              = sett.IsCopySource;
            bool            IsRestoreTarget           = sett.IsRestoreTarget;
            bool            IsLogShipping             = sett.IsLogShipping;
            int             FileRetentionPeriodMin    = sett.FileRetentionPeriodMin;
            int             ThresholdMin              = sett.ThresholdMin;
            int             HistoryRetentionPeriodMin = sett.HistoryRetentionPeriodMin;
            bool            IsSQLLogin                = sett.IsSQLLogin;
            string          MonitorServer             = sett.MonitorServer;
            string          login                     = sett.Login;
            string          password                  = sett.Password;
            int             RunMin                    = sett.RunMin;
            string          FileLog                   = sett.FileLog;
            bool            isrun                     = false;
            DateTime        dt          = DateTime.Now;
            string          file_end    = dt.Year.ToString() + "_" + dt.Month.ToString() + "_" + dt.Day.ToString() + "_" + dt.Hour.ToString() + "_" + dt.Minute.ToString() + "_" + dt.Second.ToString();
            string          backup_name = null;
            string          filesource  = null;
            string          filetarget  = null;
            List <string[]> db_files    = new List <string[]>();
            string          temp;

            string[] strs;
            string   source_version = null;
            string   target_version = null;

            DBFileFunctions.DBTypeEndRestore DBTypeEndRestore = DBFileFunctions.DBTypeEndRestore.NORECOVERY;
            bool IsRestoreModeStandby = false;

            if (!IsSQLLogin)
            {
                login    = null;
                password = null;
            }

            using (Stream st_log = new FileStream(FileLog, FileMode.Create, FileAccess.Write))
            {
                using (TextWriter tw_log = new StreamWriter(st_log, Encoding.Unicode))
                {
                    isrun = DBFileFunctions.GetVersionServer(SourceServer, tw_log, ref source_version, login, password);
                    if (isrun)
                    {
                        isrun = DBFileFunctions.GetVersionServer(TargetServer, tw_log, ref target_version, login, password);
                    }
                    if (isrun)
                    {
                        if (source_version == target_version)
                        {
                            DBTypeEndRestore     = DBFileFunctions.DBTypeEndRestore.STANDBY;
                            IsRestoreModeStandby = true;
                        }

                        for (int i = 0; i < list.Count; i++)
                        {
                            temp = list[i];
                            strs = temp.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

                            SourceDB = strs[0];
                            TargetDB = strs[1];

                            if (!IsSourceServer)
                            {
                                SourceFile = SourceFileList[i];
                            }
                            else
                            {
                                SourceFile = null;
                            }

                            tw_log.WriteLine($"Начало {SourceDB}->{TargetDB} {DateTime.Now}");
                            tw_log.Flush();

                            isrun = DBFileFunctions.RunRestoreModelDB(SourceServer, SourceDB, tw_log, DBFileFunctions.DBTypeRestoreModel.FULL, login, password);

                            if (isrun)
                            {
                                isrun = DBFileFunctions.RunBackupCopyRestoreBD(SourceDB, SourceServer, SourceFolderShared, tw_log,
                                                                               IsSourceServer, file_end, TargetFolderShared, SourceFile, IsDeleteSourceBackup, IsDeleteTargetBackup,
                                                                               TargetDB, TargetServer, MoveTo, ref backup_name, IsCopySource, IsRestoreTarget, DBTypeEndRestore, login, password);
                            }

                            if (IsLogShipping)
                            {
                                if (isrun)
                                {
                                    isrun = false;

                                    isrun = DBFileFunctions.RunLogShipping(SourceServer, TargetServer, SourceFolderShared, TargetFolderShared,
                                                                           tw_log, SourceDB, TargetDB, IsDeleteSourceBackup, IsDeleteTargetBackup, FileRetentionPeriodMin,
                                                                           ThresholdMin, HistoryRetentionPeriodMin, MonitorServer, RunMin, IsRestoreModeStandby, login, password);
                                }
                            }

                            if (!isrun)
                            {
                                tw_log.WriteLine($"{DateTime.Now} операция прервана с ошибкой!");
                            }
                            tw_log.WriteLine($"Конец {SourceDB}->{TargetDB} {DateTime.Now}");
                            tw_log.Flush();
                        }
                    }
                }
            }

            if (!isrun)
            {
                if (IsMail)
                {
                    Mail.RunMailMessage(MailServer, MailAddressTo, MailAddressFrom,
                                        "BackupRefreshDB", "Операция завершена неудачно. Подробности во вложении." +
                                        "\r\nСоощение сформировано: " + DateTime.Now.ToString(), new string[] { FileLog });
                }

                Console.WriteLine($"{DateTime.Now} операция прервана с ошибкой!");
            }
            else
            {
                if (IsMail)
                {
                    Mail.RunMailMessage(MailServer, MailAddressTo, MailAddressFrom,
                                        "BackupRefreshDB", "Операция завершена успешно. Подробности во вложении." +
                                        "\r\nСоощение сформировано: " + DateTime.Now.ToString(), new string[] { FileLog });
                }
            }

            Console.WriteLine("Конец");

            Console.ReadKey();
        }
示例#2
0
        static void Main(string[] args)
        {
            var             sett               = Properties.Settings.Default;
            string          SourceServer       = sett.SourceServer;
            string          TargetServer       = sett.TargetServer;
            string          SourceFolderShared = sett.SourceFolderShared;
            string          TargetFolderShared = sett.TargetFolderShared;
            bool            IsSourceServer     = sett.IsSourceServer;
            var             SourceFileList     = sett.SourceFile;
            string          SourceFile;
            string          TargetServerMirror       = sett.TargetServerMirror;
            string          TargetFolderSharedMirror = sett.TargetFolderSharedMirror;
            bool            IsMirror               = sett.IsMirror;
            string          SourceDB               = "TEST";  //sett.ListDB;
            string          TargetDB               = "TEST2"; //sett.TargetDB;
            var             list                   = sett.ListDB;
            bool            IsDeleteSourceBackup   = sett.IsDeleteSourceBackup;
            bool            IsDeleteTargetBackup   = sett.IsDeleteTargetBackup;
            string          MoveTo                 = sett.MoveTo;
            string          MoveToMirror           = sett.MoveToMirror;
            string          MailServer             = sett.MailServer;
            string          MailAddressTo          = sett.MailAddressTo;
            string          MailAddressFrom        = sett.MailAddressFrom;
            bool            IsMail                 = sett.IsMail;
            string          SourceStringTCP_Mirror = sett.SourceStringTCP_Mirror;
            string          TargetStringTCP_Mirror = sett.TargeStringTCP_Mirror;
            bool            IsMirrorAsync          = sett.IsMirrorAsync;
            bool            IsCopySource           = sett.IsCopySource;
            bool            IsRestoreTarget        = sett.IsRestoreTarget;
            string          FileLog                = sett.FileLog;
            bool            isrun                  = false;
            DateTime        dt          = DateTime.Now;
            string          file_end    = dt.Year.ToString() + "_" + dt.Month.ToString() + "_" + dt.Day.ToString() + "_" + dt.Hour.ToString() + "_" + dt.Minute.ToString() + "_" + dt.Second.ToString();
            string          backup_name = null;
            string          filesource  = null;
            string          filetarget  = null;
            List <string[]> db_files    = new List <string[]>();
            string          temp;

            string[] strs;

            using (Stream st_log = new FileStream(FileLog, FileMode.Create, FileAccess.Write))
            {
                using (TextWriter tw_log = new StreamWriter(st_log, Encoding.Unicode))
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        temp = list[i];
                        strs = temp.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);

                        SourceDB = strs[0];
                        TargetDB = strs[1];

                        if (!IsSourceServer)
                        {
                            SourceFile = SourceFileList[i];
                        }
                        else
                        {
                            SourceFile = null;
                        }

                        tw_log.WriteLine($"Начало {SourceDB}->{TargetDB} {DateTime.Now}");
                        tw_log.Flush();

                        isrun = DBFileFunctions.RunBackupCopyRestoreBD(SourceDB, SourceServer, SourceFolderShared, tw_log,
                                                                       IsSourceServer, file_end, TargetFolderShared, SourceFile, IsDeleteSourceBackup, IsDeleteTargetBackup,
                                                                       TargetDB, TargetServer, MoveTo, ref backup_name, IsCopySource, IsRestoreTarget);

                        if (IsMirror)
                        {
                            if (isrun)
                            {
                                isrun = false;

                                db_files.Clear();

                                filesource = TargetFolderShared + @"\" + backup_name;;
                                filetarget = TargetFolderSharedMirror + @"\" + backup_name;

                                isrun = DBFileFunctions.RunMirror(filesource, filetarget, TargetServer, tw_log, TargetDB, IsDeleteSourceBackup, IsDeleteTargetBackup,
                                                                  TargetServerMirror, MoveToMirror, SourceStringTCP_Mirror, TargetStringTCP_Mirror, IsMirrorAsync, file_end);
                            }
                        }

                        if (!isrun)
                        {
                            tw_log.WriteLine($"{DateTime.Now} операция прервана с ошибкой!");
                        }
                        tw_log.WriteLine($"Конец {SourceDB}->{TargetDB} {DateTime.Now}");
                        tw_log.Flush();
                    }
                }
            }

            if (!isrun)
            {
                if (IsMail)
                {
                    Mail.RunMailMessage(MailServer, MailAddressTo, MailAddressFrom,
                                        "BackupRefreshDB", "Операция завершена неудачно. Подробности во вложении." +
                                        "\r\nСоощение сформировано: " + DateTime.Now.ToString(), new string[] { FileLog });
                }

                Console.WriteLine($"{DateTime.Now} операция прервана с ошибкой!");
            }
            else
            {
                if (IsMail)
                {
                    Mail.RunMailMessage(MailServer, MailAddressTo, MailAddressFrom,
                                        "BackupRefreshDB", "Операция завершена успешно. Подробности во вложении." +
                                        "\r\nСоощение сформировано: " + DateTime.Now.ToString(), new string[] { FileLog });
                }
            }

            Console.WriteLine("Конец");

            Console.ReadKey();
        }