Commit f0aff75d4e5af6f7c5678ab652feca4b68973e87

Authored by Schwirg László
1 parent 468b291c

v1.11.3

- adatbázis backup futása során megjelenő üzenetek kiegészítése
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
... ... @@ -62,12 +62,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
62 62 var origsqld = config.GetDefinitionList().FirstOrDefault(x => x.Xml_Key == key);
63 63 if (origsqld != null)
64 64 {
65   - var sqld = new SQLDataBase(origsqld);
  65 + var sqld = new SQLDataBase(origsqld);
  66 + var dbname = SQLDataBaseManagerCore.GetDBName(sqld.SQLCS);
  67 + ColorConsole.WriteLine($"Database backup process started. DB key:'{key}', name:'{dbname}'...", ConsoleColor.Yellow);
66 68 if (!string.IsNullOrWhiteSpace(targetfolder)) { sqld.Xml_BackupTargetDirectoryPath = targetfolder; }
67 69 if (enabledbbackup) { SQLDataBaseManagerCore.CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, sqld.Xml_CreateZip, timestamp); }
68 70 if (enablescriptbackup) { SQLDataBaseManagerCore.BackupSqlScripts(sqld.Xml_BackupTargetDirectoryPath, sqld.Xml_BackupFileNameMask, sqld.SQLCS, sqld.Xml_CreateZip, timestamp); }
69 71 if (enabletabledatabackup) { SQLDataBaseManagerCore.BackupSqlData(sqld, timestamp); }
  72 + ColorConsole.WriteLine($"Database backup process finished!", ConsoleColor.DarkGreen);
70 73 }
  74 + else { ColorConsole.WriteLine($"Database backup process error. DB key incorrect:'{key}'...", ConsoleColor.Red); }
71 75 }
72 76 #endregion Execute
73 77  
... ... @@ -448,6 +452,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
448 452 public static void RelocatePhysicalFiles(SQLDataBase sqld, string targetdirectory, string restoredbname)
449 453 {
450 454 var dbbackupfilepath = CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, false);
  455 + if (dbbackupfilepath == null) return;
451 456 RestoreBackup(sqld.SQLCS, dbbackupfilepath, targetdirectory, false, restoredbname);
452 457 if (File.Exists(dbbackupfilepath)) { File.Delete(dbbackupfilepath); }
453 458 }
... ... @@ -503,45 +508,52 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
503 508 public static string CreateBackup(string backupdirectorypath, string sqlconnectionstring, string backupfilenamemask, bool createzip = false,DateTime? timestamp=null)
504 509 {
505 510 var sqlserver = SQLServerConnect(sqlconnectionstring);
  511 + string returnfilename = null;
  512 + if (sqlserver != null)
  513 + {
  514 + var dbname = GetDBName(sqlconnectionstring);
506 515  
507   - var backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss");
508   -
509   - string backupfileNameOnly = Path.GetFileNameWithoutExtension(backupfilenamemask);
510   - var vars = new Dictionary<string, string>();
511   - vars.Add(nameof(DBSubstitutionName.DATABASE), GetDBName(sqlconnectionstring));
512   - vars.Add(nameof(DBSubstitutionName.DATASOURCE), GetDataSource(sqlconnectionstring));
513   - vars.Add(nameof(DBSubstitutionName.DBOTYPE), "DBBACKUP");
514   - vars.Add(nameof(DBSubstitutionName.DBONAME), "");
515   - vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), "");
516   - vars.Add(nameof(DBSubstitutionName.BACKUPTS), backupts);
517   -
518   - backupfileNameOnly = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfileNameOnly, "{}@@");
519   -
520   - string backupfilename = backupfileNameOnly + ".bak";
521   - string backupFullName = Path.Combine(backupdirectorypath, backupfilename);
522   - if (File.Exists(backupFullName)) { File.Delete(backupFullName); }
  516 + var backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss");
523 517  
524   - var smoBackup = new Backup();
525   - smoBackup.Action = BackupActionType.Database;
526   - smoBackup.BackupSetDescription = $"Full Backup of {sqlserver.ConnectionContext.DatabaseName}";
527   - smoBackup.BackupSetName = sqlserver.ConnectionContext.DatabaseName + " Backup";
528   - smoBackup.Database = sqlserver.ConnectionContext.DatabaseName;
529   - smoBackup.MediaDescription = "Disk";
530   - smoBackup.Devices.AddDevice(backupFullName, DeviceType.File);
531   - smoBackup.SqlBackup(sqlserver);
  518 + string backupfileNameOnly = Path.GetFileNameWithoutExtension(backupfilenamemask);
  519 + var vars = new Dictionary<string, string>();
  520 + vars.Add(nameof(DBSubstitutionName.DATABASE), GetDBName(sqlconnectionstring));
  521 + vars.Add(nameof(DBSubstitutionName.DATASOURCE), GetDataSource(sqlconnectionstring));
  522 + vars.Add(nameof(DBSubstitutionName.DBOTYPE), "DBBACKUP");
  523 + vars.Add(nameof(DBSubstitutionName.DBONAME), "");
  524 + vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), "");
  525 + vars.Add(nameof(DBSubstitutionName.BACKUPTS), backupts);
532 526  
533   - if (createzip)
534   - {
535   - string ZIPbackupfilename = backupfileNameOnly + ".zip";
536   - string ZIPbackupFullName = Path.Combine(backupdirectorypath, ZIPbackupfilename);
537   - if (File.Exists(ZIPbackupFullName)) { File.Delete(ZIPbackupFullName); }
  527 + backupfileNameOnly = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfileNameOnly, "{}@@");
538 528  
539   - ZipTools.CreateEntriesFromDirectoryContent(backupdirectorypath, ZIPbackupFullName, backupfilename, "", removearchivedfiles: false, storepathinzip: false);
  529 + string backupfilename = backupfileNameOnly + ".bak";
  530 + string backupFullName = Path.Combine(backupdirectorypath, backupfilename);
540 531 if (File.Exists(backupFullName)) { File.Delete(backupFullName); }
541   - return ZIPbackupFullName;
542 532  
  533 + var smoBackup = new Backup();
  534 + smoBackup.Action = BackupActionType.Database;
  535 + smoBackup.BackupSetDescription = $"Full Backup of {sqlserver.ConnectionContext.DatabaseName}";
  536 + smoBackup.BackupSetName = sqlserver.ConnectionContext.DatabaseName + " Backup";
  537 + smoBackup.Database = sqlserver.ConnectionContext.DatabaseName;
  538 + smoBackup.MediaDescription = "Disk";
  539 + smoBackup.Devices.AddDevice(backupFullName, DeviceType.File);
  540 + smoBackup.SqlBackup(sqlserver);
  541 +
  542 + returnfilename = backupFullName;
  543 + if (createzip)
  544 + {
  545 + string ZIPbackupfilename = backupfileNameOnly + ".zip";
  546 + string ZIPbackupFullName = Path.Combine(backupdirectorypath, ZIPbackupfilename);
  547 + if (File.Exists(ZIPbackupFullName)) { File.Delete(ZIPbackupFullName); }
  548 +
  549 + ZipTools.CreateEntriesFromDirectoryContent(backupdirectorypath, ZIPbackupFullName, backupfilename, "", removearchivedfiles: false, storepathinzip: false);
  550 + if (File.Exists(backupFullName)) { File.Delete(backupFullName); }
  551 + returnfilename = ZIPbackupFullName;
  552 + }
  553 + ColorConsole.WriteLine($"Database backup created. DB name:'{dbname}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.DarkGreen);
543 554 }
544   - return backupFullName;
  555 + else { ColorConsole.WriteLine($"SQL scripts create: error in db connection string. '{sqlconnectionstring}'", ConsoleColor.DarkGreen); }
  556 + return returnfilename;
545 557 }
546 558  
547 559 #region private methods
... ... @@ -878,6 +890,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
878 890 public static void BackupSqlScripts(string backupdirectorypath,string backupfilenamemask,string sqlcs,bool createZip, DateTime? timestamp=null)
879 891 {
880 892 var sqlserver = SQLServerConnect(sqlcs);
  893 + var dbname = GetDBName(sqlcs);
881 894 if (sqlserver!=null)
882 895 {
883 896 string backupts = (timestamp.HasValue? timestamp.Value:DateTime.Now).ToString("yyyyMMddHHmmss");
... ... @@ -913,12 +926,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
913 926 ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Views.Cast<SqlSmoObject>().ToList(), vars);
914 927 ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Tables.Cast<SqlSmoObject>().ToList(), vars);
915 928 ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Triggers.Cast<SqlSmoObject>().ToList(), vars);
916   - if (createZip)
917   - {
918   - ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", backupts,removearchivedfiles:true, storepathinzip: false);
919   - }
  929 + if (createZip) { ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", backupts,removearchivedfiles:true, storepathinzip: false); }
  930 + var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath);
  931 + ColorConsole.WriteLine($"SQL scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen);
920 932 }
921   -
  933 + else { ColorConsole.WriteLine($"SQL scripts create: error in db connection string. '{sqlcs}'", ConsoleColor.DarkGreen); }
922 934 }
923 935 private static void ScriptOneObject(Server sqlserver,string backupdirectory,string backupfilenamemask,List<SqlSmoObject> sqldbobjects,Dictionary<string, string> vars)
924 936 {
... ... @@ -989,6 +1001,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
989 1001 {
990 1002 string sqlcs = sqld.SQLCS;
991 1003 var sqlserver = SQLServerConnect(sqlcs);
  1004 + var dbname = GetDBName(sqlcs);
992 1005 if (sqlserver != null)
993 1006 {
994 1007 string backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss");
... ... @@ -1037,7 +1050,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
1037 1050 string fullpathregex = Regex.Escape(string.Join(";",backupfilepathlist)).Replace(';','|');
1038 1051 ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", fullpathregex, removearchivedfiles: true, storepathinzip: false);
1039 1052 }
  1053 + var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath);
  1054 + ColorConsole.WriteLine($"SQL data scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen);
1040 1055 }
  1056 + else { ColorConsole.WriteLine($"SQL data scripts create: error in db connection string. '{sqlcs}'", ConsoleColor.DarkGreen); }
1041 1057 }
1042 1058 private static List<string> ScriptOneDataGroup(Server sqlserver, string backupdirectorypath, string backupfilenamemask, List<string> tablenamelist, Dictionary<string, string> vars,out List<string> errormessageList)
1043 1059 {
... ...
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... ... @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 32 // You can specify all the values or you can default the Build and Revision Numbers
33 33 // by using the '*' as shown below:
34 34 // [assembly: AssemblyVersion("1.0.*")]
35   -[assembly: AssemblyVersion("1.11.2.0")]
36   -[assembly: AssemblyFileVersion("1.11.2.0")]
  35 +[assembly: AssemblyVersion("1.11.3.0")]
  36 +[assembly: AssemblyFileVersion("1.11.3.0")]
... ...