From f0aff75d4e5af6f7c5678ab652feca4b68973e87 Mon Sep 17 00:00:00 2001 From: Schwirg László Date: Fri, 22 Apr 2022 16:13:49 +0200 Subject: [PATCH] v1.11.3 - adatbázis backup futása során megjelenő üzenetek kiegészítése --- Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------- Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 56 insertions(+), 40 deletions(-) diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs index 76e7d4d..7ccf71b 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs @@ -62,12 +62,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS var origsqld = config.GetDefinitionList().FirstOrDefault(x => x.Xml_Key == key); if (origsqld != null) { - var sqld = new SQLDataBase(origsqld); + var sqld = new SQLDataBase(origsqld); + var dbname = SQLDataBaseManagerCore.GetDBName(sqld.SQLCS); + ColorConsole.WriteLine($"Database backup process started. DB key:'{key}', name:'{dbname}'...", ConsoleColor.Yellow); if (!string.IsNullOrWhiteSpace(targetfolder)) { sqld.Xml_BackupTargetDirectoryPath = targetfolder; } if (enabledbbackup) { SQLDataBaseManagerCore.CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, sqld.Xml_CreateZip, timestamp); } if (enablescriptbackup) { SQLDataBaseManagerCore.BackupSqlScripts(sqld.Xml_BackupTargetDirectoryPath, sqld.Xml_BackupFileNameMask, sqld.SQLCS, sqld.Xml_CreateZip, timestamp); } if (enabletabledatabackup) { SQLDataBaseManagerCore.BackupSqlData(sqld, timestamp); } + ColorConsole.WriteLine($"Database backup process finished!", ConsoleColor.DarkGreen); } + else { ColorConsole.WriteLine($"Database backup process error. DB key incorrect:'{key}'...", ConsoleColor.Red); } } #endregion Execute @@ -448,6 +452,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS public static void RelocatePhysicalFiles(SQLDataBase sqld, string targetdirectory, string restoredbname) { var dbbackupfilepath = CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, false); + if (dbbackupfilepath == null) return; RestoreBackup(sqld.SQLCS, dbbackupfilepath, targetdirectory, false, restoredbname); if (File.Exists(dbbackupfilepath)) { File.Delete(dbbackupfilepath); } } @@ -503,45 +508,52 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS public static string CreateBackup(string backupdirectorypath, string sqlconnectionstring, string backupfilenamemask, bool createzip = false,DateTime? timestamp=null) { var sqlserver = SQLServerConnect(sqlconnectionstring); + string returnfilename = null; + if (sqlserver != null) + { + var dbname = GetDBName(sqlconnectionstring); - var backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss"); - - string backupfileNameOnly = Path.GetFileNameWithoutExtension(backupfilenamemask); - var vars = new Dictionary(); - vars.Add(nameof(DBSubstitutionName.DATABASE), GetDBName(sqlconnectionstring)); - vars.Add(nameof(DBSubstitutionName.DATASOURCE), GetDataSource(sqlconnectionstring)); - vars.Add(nameof(DBSubstitutionName.DBOTYPE), "DBBACKUP"); - vars.Add(nameof(DBSubstitutionName.DBONAME), ""); - vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), ""); - vars.Add(nameof(DBSubstitutionName.BACKUPTS), backupts); - - backupfileNameOnly = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfileNameOnly, "{}@@"); - - string backupfilename = backupfileNameOnly + ".bak"; - string backupFullName = Path.Combine(backupdirectorypath, backupfilename); - if (File.Exists(backupFullName)) { File.Delete(backupFullName); } + var backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss"); - var smoBackup = new Backup(); - smoBackup.Action = BackupActionType.Database; - smoBackup.BackupSetDescription = $"Full Backup of {sqlserver.ConnectionContext.DatabaseName}"; - smoBackup.BackupSetName = sqlserver.ConnectionContext.DatabaseName + " Backup"; - smoBackup.Database = sqlserver.ConnectionContext.DatabaseName; - smoBackup.MediaDescription = "Disk"; - smoBackup.Devices.AddDevice(backupFullName, DeviceType.File); - smoBackup.SqlBackup(sqlserver); + string backupfileNameOnly = Path.GetFileNameWithoutExtension(backupfilenamemask); + var vars = new Dictionary(); + vars.Add(nameof(DBSubstitutionName.DATABASE), GetDBName(sqlconnectionstring)); + vars.Add(nameof(DBSubstitutionName.DATASOURCE), GetDataSource(sqlconnectionstring)); + vars.Add(nameof(DBSubstitutionName.DBOTYPE), "DBBACKUP"); + vars.Add(nameof(DBSubstitutionName.DBONAME), ""); + vars.Add(nameof(DBSubstitutionName.DBDATAGROUP), ""); + vars.Add(nameof(DBSubstitutionName.BACKUPTS), backupts); - if (createzip) - { - string ZIPbackupfilename = backupfileNameOnly + ".zip"; - string ZIPbackupFullName = Path.Combine(backupdirectorypath, ZIPbackupfilename); - if (File.Exists(ZIPbackupFullName)) { File.Delete(ZIPbackupFullName); } + backupfileNameOnly = VRH.Common.StringConstructor.ResolveConstructorR(vars, backupfileNameOnly, "{}@@"); - ZipTools.CreateEntriesFromDirectoryContent(backupdirectorypath, ZIPbackupFullName, backupfilename, "", removearchivedfiles: false, storepathinzip: false); + string backupfilename = backupfileNameOnly + ".bak"; + string backupFullName = Path.Combine(backupdirectorypath, backupfilename); if (File.Exists(backupFullName)) { File.Delete(backupFullName); } - return ZIPbackupFullName; + var smoBackup = new Backup(); + smoBackup.Action = BackupActionType.Database; + smoBackup.BackupSetDescription = $"Full Backup of {sqlserver.ConnectionContext.DatabaseName}"; + smoBackup.BackupSetName = sqlserver.ConnectionContext.DatabaseName + " Backup"; + smoBackup.Database = sqlserver.ConnectionContext.DatabaseName; + smoBackup.MediaDescription = "Disk"; + smoBackup.Devices.AddDevice(backupFullName, DeviceType.File); + smoBackup.SqlBackup(sqlserver); + + returnfilename = backupFullName; + if (createzip) + { + string ZIPbackupfilename = backupfileNameOnly + ".zip"; + string ZIPbackupFullName = Path.Combine(backupdirectorypath, ZIPbackupfilename); + if (File.Exists(ZIPbackupFullName)) { File.Delete(ZIPbackupFullName); } + + ZipTools.CreateEntriesFromDirectoryContent(backupdirectorypath, ZIPbackupFullName, backupfilename, "", removearchivedfiles: false, storepathinzip: false); + if (File.Exists(backupFullName)) { File.Delete(backupFullName); } + returnfilename = ZIPbackupFullName; + } + ColorConsole.WriteLine($"Database backup created. DB name:'{dbname}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.DarkGreen); } - return backupFullName; + else { ColorConsole.WriteLine($"SQL scripts create: error in db connection string. '{sqlconnectionstring}'", ConsoleColor.DarkGreen); } + return returnfilename; } #region private methods @@ -878,6 +890,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS public static void BackupSqlScripts(string backupdirectorypath,string backupfilenamemask,string sqlcs,bool createZip, DateTime? timestamp=null) { var sqlserver = SQLServerConnect(sqlcs); + var dbname = GetDBName(sqlcs); if (sqlserver!=null) { string backupts = (timestamp.HasValue? timestamp.Value:DateTime.Now).ToString("yyyyMMddHHmmss"); @@ -913,12 +926,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Views.Cast().ToList(), vars); ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Tables.Cast().ToList(), vars); ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Triggers.Cast().ToList(), vars); - if (createZip) - { - ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", backupts,removearchivedfiles:true, storepathinzip: false); - } + if (createZip) { ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", backupts,removearchivedfiles:true, storepathinzip: false); } + var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath); + ColorConsole.WriteLine($"SQL scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen); } - + else { ColorConsole.WriteLine($"SQL scripts create: error in db connection string. '{sqlcs}'", ConsoleColor.DarkGreen); } } private static void ScriptOneObject(Server sqlserver,string backupdirectory,string backupfilenamemask,List sqldbobjects,Dictionary vars) { @@ -989,6 +1001,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS { string sqlcs = sqld.SQLCS; var sqlserver = SQLServerConnect(sqlcs); + var dbname = GetDBName(sqlcs); if (sqlserver != null) { string backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss"); @@ -1037,7 +1050,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS string fullpathregex = Regex.Escape(string.Join(";",backupfilepathlist)).Replace(';','|'); ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", fullpathregex, removearchivedfiles: true, storepathinzip: false); } + var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath); + ColorConsole.WriteLine($"SQL data scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen); } + else { ColorConsole.WriteLine($"SQL data scripts create: error in db connection string. '{sqlcs}'", ConsoleColor.DarkGreen); } } private static List ScriptOneDataGroup(Server sqlserver, string backupdirectorypath, string backupfilenamemask, List tablenamelist, Dictionary vars,out List errormessageList) { diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs index 5897bad..82b471e 100644 --- a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs +++ b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.11.2.0")] -[assembly: AssemblyFileVersion("1.11.2.0")] +[assembly: AssemblyVersion("1.11.3.0")] +[assembly: AssemblyFileVersion("1.11.3.0")] -- libgit2 0.21.2