Commit 3aa4f475453dab2f87bd46e9be426c4f1d7a0837

Authored by Schwirg László
1 parent 1369dd36

v1.29.3

- backup timeout megadható
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
@@ -1474,8 +1474,11 @@ GO @@ -1474,8 +1474,11 @@ GO
1474 ColorConsole.WriteLine(backupfilename, ConsoleColor.Yellow, prefix: " backupfilename:"); 1474 ColorConsole.WriteLine(backupfilename, ConsoleColor.Yellow, prefix: " backupfilename:");
1475 ColorConsole.WriteLine(backupFullName, ConsoleColor.Yellow, prefix: " backupFullName:"); 1475 ColorConsole.WriteLine(backupFullName, ConsoleColor.Yellow, prefix: " backupFullName:");
1476 ColorConsole.WriteLine(createzip.ToString(), ConsoleColor.Yellow, prefix: " createzip:"); 1476 ColorConsole.WriteLine(createzip.ToString(), ConsoleColor.Yellow, prefix: " createzip:");
1477 - ColorConsole.WriteLine(ZIPbackupfilename, ConsoleColor.Yellow, prefix: " ZIPbackupfilename:");  
1478 - ColorConsole.WriteLine(ZIPbackupFullName, ConsoleColor.Yellow, prefix: " ZIPbackupFullName:"); 1477 + if (createzip)
  1478 + {
  1479 + ColorConsole.WriteLine(ZIPbackupfilename, ConsoleColor.Yellow, prefix: " ZIPbackupfilename:");
  1480 + ColorConsole.WriteLine(ZIPbackupFullName, ConsoleColor.Yellow, prefix: " ZIPbackupFullName:");
  1481 + }
1479 ColorConsole.WriteLine(usetranzit.ToString(), ConsoleColor.Yellow, prefix: " usetranzit:"); 1482 ColorConsole.WriteLine(usetranzit.ToString(), ConsoleColor.Yellow, prefix: " usetranzit:");
1480 ColorConsole.WriteLine(tranzitFullName, ConsoleColor.Yellow, prefix: " tranzitFullName:"); 1483 ColorConsole.WriteLine(tranzitFullName, ConsoleColor.Yellow, prefix: " tranzitFullName:");
1481 ColorConsole.WriteLine(returnfilename, ConsoleColor.Yellow, prefix: " returnfilename:"); 1484 ColorConsole.WriteLine(returnfilename, ConsoleColor.Yellow, prefix: " returnfilename:");
@@ -1507,11 +1510,19 @@ GO @@ -1507,11 +1510,19 @@ GO
1507 try 1510 try
1508 { 1511 {
1509 sqlserver = SQLServerConnect(sqld.SQLCS, "master"); if (sqlserver == null) { return null; } 1512 sqlserver = SQLServerConnect(sqld.SQLCS, "master"); if (sqlserver == null) { return null; }
1510 - smoBackup.SqlBackupAsync(sqlserver);  
1511 - var startbackup = DateTime.Now;  
1512 - smoBackup.Wait(); 1513 + sqlserver.ConnectionContext.StatementTimeout = sqld.Xml_BackupTimeout;
  1514 + backupstarttime = DateTime.Now;
  1515 + smoBackup.SqlBackup(sqlserver);
  1516 + //smoBackup.Wait();
1513 Console.WriteLine($""); 1517 Console.WriteLine($"");
1514 - Console.WriteLine($"Backup completed. Backup time: {(int)(DateTime.Now.Subtract(startbackup).TotalSeconds)}sec."); 1518 + Console.WriteLine($"Backup completed. Backup time: {(int)(DateTime.Now.Subtract(backupstarttime).TotalSeconds)}sec.");
  1519 + }
  1520 + catch (Exception ex)
  1521 + {
  1522 + ColorConsole.WriteLine($"ERROR! Database backup failed. DB name:'{smoBackup.Database}'. BAK/ZIP file name:'{Path.GetFileName(returnfilename)}'", ConsoleColor.Red);
  1523 + var errmsg = ""; while (ex != null) { errmsg += ";" + ex.Message;ex = ex.InnerException; }
  1524 + ColorConsole.WriteLine(errmsg, ConsoleColor.Red);
  1525 + return null;
1515 } 1526 }
1516 finally { sqlserver?.ConnectionContext.SqlConnectionObject.Dispose(); } 1527 finally { sqlserver?.ConnectionContext.SqlConnectionObject.Dispose(); }
1517 if (usetranzit && File.Exists(tranzitFullName)) 1528 if (usetranzit && File.Exists(tranzitFullName))
@@ -1539,14 +1550,14 @@ GO @@ -1539,14 +1550,14 @@ GO
1539 } 1550 }
1540 return returnfilename; 1551 return returnfilename;
1541 } 1552 }
1542 - 1553 + private static DateTime backupstarttime;
1543 private static void SmoBackupRestore_PercentComplete(object sender, PercentCompleteEventArgs e) 1554 private static void SmoBackupRestore_PercentComplete(object sender, PercentCompleteEventArgs e)
1544 { 1555 {
1545 ColorConsole.SetCursorPosition(0, Console.CursorTop); 1556 ColorConsole.SetCursorPosition(0, Console.CursorTop);
1546 - ColorConsole.Write($"Completed: {e.Percent}%. {e.Message}"); 1557 + ColorConsole.Write($"Completed: {e.Percent}%. {e.Message}. Backup time : {(int)(DateTime.Now.Subtract(backupstarttime).TotalSeconds)}sec.");
1547 } 1558 }
1548 1559
1549 - public static List<FileInfo> GetBackupFilePathList(SQLDataBase sqld) 1560 + public static List<FileInfo> GetBackupFilePathList(SQLDataBase sqld)
1550 { 1561 {
1551 var filenamemask = Path.GetFileNameWithoutExtension(sqld.Xml_BackupFileNameMask); 1562 var filenamemask = Path.GetFileNameWithoutExtension(sqld.Xml_BackupFileNameMask);
1552 var vars = new Dictionary<string, string>(); 1563 var vars = new Dictionary<string, string>();
@@ -2313,6 +2324,7 @@ GO @@ -2313,6 +2324,7 @@ GO
2313 Xml_TranzitDirectoryPath = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.TranzitDirectoryPath), this.RootElement, SQLDataBase.XmlStructure.Attributes.TranzitDirectoryPath.Values.DEFAULT), 2324 Xml_TranzitDirectoryPath = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.TranzitDirectoryPath), this.RootElement, SQLDataBase.XmlStructure.Attributes.TranzitDirectoryPath.Values.DEFAULT),
2314 Xml_PhysicalFilesDirectoryPath = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.PhysicalFilesDirectoryPath), this.RootElement, SQLDataBase.XmlStructure.Attributes.PhysicalFilesDirectoryPath.Values.DEFAULT), 2325 Xml_PhysicalFilesDirectoryPath = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.PhysicalFilesDirectoryPath), this.RootElement, SQLDataBase.XmlStructure.Attributes.PhysicalFilesDirectoryPath.Values.DEFAULT),
2315 Xml_ScriptCommandTimeout = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.ScriptCommandTimeout), this.RootElement, SQLDataBase.XmlStructure.Attributes.ScriptCommandTimeout.Values.DEFAULT), 2326 Xml_ScriptCommandTimeout = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.ScriptCommandTimeout), this.RootElement, SQLDataBase.XmlStructure.Attributes.ScriptCommandTimeout.Values.DEFAULT),
  2327 + Xml_BackupTimeout = GetValue(nameof(SQLDataBase.XmlStructure.Attributes.BackupTimeout), this.RootElement, SQLDataBase.XmlStructure.Attributes.BackupTimeout.Values.DEFAULT),
2316 }; 2328 };
2317 var sqldatabasexmllist = GetAllXElements(nameof(SQLDataBase.XmlStructure.SQLDataBase)); 2329 var sqldatabasexmllist = GetAllXElements(nameof(SQLDataBase.XmlStructure.SQLDataBase));
2318 if (sqldatabasexmllist != null && sqldatabasexmllist.Any()) 2330 if (sqldatabasexmllist != null && sqldatabasexmllist.Any())
@@ -2343,6 +2355,7 @@ GO @@ -2343,6 +2355,7 @@ GO
2343 public string Xml_SQLConnectionString; 2355 public string Xml_SQLConnectionString;
2344 public string Xml_PhysicalFilesDirectoryPath; 2356 public string Xml_PhysicalFilesDirectoryPath;
2345 public int Xml_ScriptCommandTimeout; 2357 public int Xml_ScriptCommandTimeout;
  2358 + public int Xml_BackupTimeout;
2346 public List<SQLData> Xml_SQLDataList; 2359 public List<SQLData> Xml_SQLDataList;
2347 public List<LastUpdatedTrigger> Xml_SQLLastUpdatedTriggerList; 2360 public List<LastUpdatedTrigger> Xml_SQLLastUpdatedTriggerList;
2348 public List<DBUser> Xml_SQLDbUserList; 2361 public List<DBUser> Xml_SQLDbUserList;
@@ -2460,6 +2473,7 @@ GO @@ -2460,6 +2473,7 @@ GO
2460 Xml_PhysicalFilesDirectoryPath = GetValue(nameof(XmlStructure.SQLDataBase.Attributes.PhysicalFilesDirectoryPath), sqldatabasexml, common.Xml_PhysicalFilesDirectoryPath); 2473 Xml_PhysicalFilesDirectoryPath = GetValue(nameof(XmlStructure.SQLDataBase.Attributes.PhysicalFilesDirectoryPath), sqldatabasexml, common.Xml_PhysicalFilesDirectoryPath);
2461 2474
2462 Xml_ScriptCommandTimeout = GetValue(nameof(XmlStructure.SQLDataBase.Attributes.ScriptCommandTimeout), sqldatabasexml, common.Xml_ScriptCommandTimeout); 2475 Xml_ScriptCommandTimeout = GetValue(nameof(XmlStructure.SQLDataBase.Attributes.ScriptCommandTimeout), sqldatabasexml, common.Xml_ScriptCommandTimeout);
  2476 + Xml_BackupTimeout = GetValue(nameof(XmlStructure.SQLDataBase.Attributes.BackupTimeout), sqldatabasexml, common.Xml_BackupTimeout);
2463 2477
2464 Xml_SQLDataList = new List<SQLData>(); 2478 Xml_SQLDataList = new List<SQLData>();
2465 var sqldataXmlList = GetAllXElements(sqldatabasexml, nameof(XmlStructure.SQLDataBase.SQLData)); 2479 var sqldataXmlList = GetAllXElements(sqldatabasexml, nameof(XmlStructure.SQLDataBase.SQLData));
@@ -2515,6 +2529,7 @@ GO @@ -2515,6 +2529,7 @@ GO
2515 public static class PhysicalFilesDirectoryPath { public static class Values { public const string DEFAULT = ""; } } 2529 public static class PhysicalFilesDirectoryPath { public static class Values { public const string DEFAULT = ""; } }
2516 public static class ScriptCommandTimeout { public static class Values { public const int DEFAULT = 10000; } } 2530 public static class ScriptCommandTimeout { public static class Values { public const int DEFAULT = 10000; } }
2517 2531
  2532 + public static class BackupTimeout { public static class Values { public const int DEFAULT = 10000; } }
2518 2533
2519 public static class CreateZip{ public static class Values { public const bool DEFAULT = true; } } 2534 public static class CreateZip{ public static class Values { public const bool DEFAULT = true; } }
2520 } 2535 }
@@ -2532,6 +2547,7 @@ GO @@ -2532,6 +2547,7 @@ GO
2532 public static class CreateZip { } 2547 public static class CreateZip { }
2533 public static class PhysicalFilesDirectoryPath { } 2548 public static class PhysicalFilesDirectoryPath { }
2534 public static class ScriptCommandTimeout { public static class Values { public const int DEFAULT = 10000; } } 2549 public static class ScriptCommandTimeout { public static class Values { public const int DEFAULT = 10000; } }
  2550 + public static class BackupTimeout { public static class Values { public const int DEFAULT = 10000; } }
2535 } 2551 }
2536 public static class SQLData 2552 public static class SQLData
2537 { 2553 {
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.29.2.0")]  
36 -[assembly: AssemblyFileVersion("1.29.2.0")] 35 +[assembly: AssemblyVersion("1.29.3.0")]
  36 +[assembly: AssemblyFileVersion("1.29.3.0")]