Commit f0aff75d4e5af6f7c5678ab652feca4b68973e87
1 parent
468b291c
v1.11.3
- adatbázis backup futása során megjelenő üzenetek kiegészítése
Showing
2 changed files
with
56 additions
and
40 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
@@ -62,12 +62,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -62,12 +62,16 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
62 | var origsqld = config.GetDefinitionList().FirstOrDefault(x => x.Xml_Key == key); | 62 | var origsqld = config.GetDefinitionList().FirstOrDefault(x => x.Xml_Key == key); |
63 | if (origsqld != null) | 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 | if (!string.IsNullOrWhiteSpace(targetfolder)) { sqld.Xml_BackupTargetDirectoryPath = targetfolder; } | 68 | if (!string.IsNullOrWhiteSpace(targetfolder)) { sqld.Xml_BackupTargetDirectoryPath = targetfolder; } |
67 | if (enabledbbackup) { SQLDataBaseManagerCore.CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, sqld.Xml_CreateZip, timestamp); } | 69 | if (enabledbbackup) { SQLDataBaseManagerCore.CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, sqld.Xml_CreateZip, timestamp); } |
68 | if (enablescriptbackup) { SQLDataBaseManagerCore.BackupSqlScripts(sqld.Xml_BackupTargetDirectoryPath, sqld.Xml_BackupFileNameMask, sqld.SQLCS, sqld.Xml_CreateZip, timestamp); } | 70 | if (enablescriptbackup) { SQLDataBaseManagerCore.BackupSqlScripts(sqld.Xml_BackupTargetDirectoryPath, sqld.Xml_BackupFileNameMask, sqld.SQLCS, sqld.Xml_CreateZip, timestamp); } |
69 | if (enabletabledatabackup) { SQLDataBaseManagerCore.BackupSqlData(sqld, timestamp); } | 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 | #endregion Execute | 76 | #endregion Execute |
73 | 77 | ||
@@ -448,6 +452,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -448,6 +452,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
448 | public static void RelocatePhysicalFiles(SQLDataBase sqld, string targetdirectory, string restoredbname) | 452 | public static void RelocatePhysicalFiles(SQLDataBase sqld, string targetdirectory, string restoredbname) |
449 | { | 453 | { |
450 | var dbbackupfilepath = CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, false); | 454 | var dbbackupfilepath = CreateBackup(sqld.Xml_BackupTargetDirectoryPath, sqld.SQLCS, sqld.Xml_BackupFileNameMask, false); |
455 | + if (dbbackupfilepath == null) return; | ||
451 | RestoreBackup(sqld.SQLCS, dbbackupfilepath, targetdirectory, false, restoredbname); | 456 | RestoreBackup(sqld.SQLCS, dbbackupfilepath, targetdirectory, false, restoredbname); |
452 | if (File.Exists(dbbackupfilepath)) { File.Delete(dbbackupfilepath); } | 457 | if (File.Exists(dbbackupfilepath)) { File.Delete(dbbackupfilepath); } |
453 | } | 458 | } |
@@ -503,45 +508,52 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -503,45 +508,52 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
503 | public static string CreateBackup(string backupdirectorypath, string sqlconnectionstring, string backupfilenamemask, bool createzip = false,DateTime? timestamp=null) | 508 | public static string CreateBackup(string backupdirectorypath, string sqlconnectionstring, string backupfilenamemask, bool createzip = false,DateTime? timestamp=null) |
504 | { | 509 | { |
505 | var sqlserver = SQLServerConnect(sqlconnectionstring); | 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 | if (File.Exists(backupFullName)) { File.Delete(backupFullName); } | 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 | #region private methods | 559 | #region private methods |
@@ -878,6 +890,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -878,6 +890,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
878 | public static void BackupSqlScripts(string backupdirectorypath,string backupfilenamemask,string sqlcs,bool createZip, DateTime? timestamp=null) | 890 | public static void BackupSqlScripts(string backupdirectorypath,string backupfilenamemask,string sqlcs,bool createZip, DateTime? timestamp=null) |
879 | { | 891 | { |
880 | var sqlserver = SQLServerConnect(sqlcs); | 892 | var sqlserver = SQLServerConnect(sqlcs); |
893 | + var dbname = GetDBName(sqlcs); | ||
881 | if (sqlserver!=null) | 894 | if (sqlserver!=null) |
882 | { | 895 | { |
883 | string backupts = (timestamp.HasValue? timestamp.Value:DateTime.Now).ToString("yyyyMMddHHmmss"); | 896 | string backupts = (timestamp.HasValue? timestamp.Value:DateTime.Now).ToString("yyyyMMddHHmmss"); |
@@ -913,12 +926,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -913,12 +926,11 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
913 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Views.Cast<SqlSmoObject>().ToList(), vars); | 926 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Views.Cast<SqlSmoObject>().ToList(), vars); |
914 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Tables.Cast<SqlSmoObject>().ToList(), vars); | 927 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Tables.Cast<SqlSmoObject>().ToList(), vars); |
915 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Triggers.Cast<SqlSmoObject>().ToList(), vars); | 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 | private static void ScriptOneObject(Server sqlserver,string backupdirectory,string backupfilenamemask,List<SqlSmoObject> sqldbobjects,Dictionary<string, string> vars) | 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,6 +1001,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
989 | { | 1001 | { |
990 | string sqlcs = sqld.SQLCS; | 1002 | string sqlcs = sqld.SQLCS; |
991 | var sqlserver = SQLServerConnect(sqlcs); | 1003 | var sqlserver = SQLServerConnect(sqlcs); |
1004 | + var dbname = GetDBName(sqlcs); | ||
992 | if (sqlserver != null) | 1005 | if (sqlserver != null) |
993 | { | 1006 | { |
994 | string backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss"); | 1007 | string backupts = (timestamp.HasValue ? timestamp.Value : DateTime.Now).ToString("yyyyMMddHHmmss"); |
@@ -1037,7 +1050,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -1037,7 +1050,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
1037 | string fullpathregex = Regex.Escape(string.Join(";",backupfilepathlist)).Replace(';','|'); | 1050 | string fullpathregex = Regex.Escape(string.Join(";",backupfilepathlist)).Replace(';','|'); |
1038 | ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", fullpathregex, removearchivedfiles: true, storepathinzip: false); | 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 | private static List<string> ScriptOneDataGroup(Server sqlserver, string backupdirectorypath, string backupfilenamemask, List<string> tablenamelist, Dictionary<string, string> vars,out List<string> errormessageList) | 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,5 +32,5 @@ using System.Runtime.InteropServices; | ||
32 | // You can specify all the values or you can default the Build and Revision Numbers | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
33 | // by using the '*' as shown below: | 33 | // by using the '*' as shown below: |
34 | // [assembly: AssemblyVersion("1.0.*")] | 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")] |