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")] |