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