diff --git a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
index d883724..36fcf62 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
@@ -233,4 +233,44 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS
return "";
}
}
+
+ #region StringExtension class
+ public static class StringExtension
+ {
+ ///
+ /// Behelyezzesíti a megadott stringben előforduló Environment.SpecialFolder enum neveket
+ /// az Environment.GetFolderPath által visszadott tényleges értékükre
+ ///
+ ///
+ ///
+ ///
+ public static string SubstituteSpecialFolderName(this string s, Environment.SpecialFolder n) { return s.Replace("@" + n.ToString() + "@", Environment.GetFolderPath(n)); }
+ }
+ #endregion StringExtension class
+
+ #region ExceptionExtension class
+ public static class ExceptionExtension
+ {
+ ///
+ /// Az exception és belső exceptionjeinek összefűzése
+ ///
+ ///
+ ///
+ public static string MessageNested(this Exception ex)
+ {
+ string rexmsg = "";
+ string indent = "";
+ const string indentof1level = " ";
+ Exception excl = ex;
+ while (true)
+ {
+ rexmsg += indent + excl.Message;
+ excl = excl.InnerException;
+ indent += (indent==""?"\n":"")+indentof1level;
+ if (excl == null) { break; }
+ }
+ return rexmsg.Replace("\n\n","\n");
+ }
+ }
+ #endregion ExceptionExtension class
}
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
index 9bcf525..b5f5695 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
@@ -103,7 +103,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
BackupPackageManagerCore.CreatePackageFile(bp, tempfolderpath, vars);
if (Directory.Exists(tempfolderpath)) { Directory.Delete(tempfolderpath,true); }
}
- catch (Exception ex) { ColorConsole.WriteLine(ex.Message, ConsoleColor.Red); }
+ catch (Exception ex) { ColorConsole.WriteLine(ex.MessageNested(), ConsoleColor.Red); }
}
#endregion First level Executors with UI
@@ -486,28 +486,28 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
private string SpecialFolderNameSubstitution(string path)
{
return path
- .R(Environment.SpecialFolder.ApplicationData)// Current User's Application Data
- .R(Environment.SpecialFolder.CommonApplicationData) // All User's Application Data
- .R(Environment.SpecialFolder.CommonProgramFiles) // Program Files
- .R(Environment.SpecialFolder.Cookies) // Internet Cookie
- .R(Environment.SpecialFolder.Desktop) // Logical Desktop
- .R(Environment.SpecialFolder.DesktopDirectory) // Physical Desktop
- .R(Environment.SpecialFolder.Favorites) // Favorites
- .R(Environment.SpecialFolder.History) // Internet History
- .R(Environment.SpecialFolder.InternetCache) // Internet Cache
- .R(Environment.SpecialFolder.MyComputer) // "My Computer" Folder
- .R(Environment.SpecialFolder.MyDocuments) // "My Documents" Folder
- .R(Environment.SpecialFolder.MyMusic) // "My Music" Folder
- .R(Environment.SpecialFolder.MyPictures) // "My Pictures" Folder
- .R(Environment.SpecialFolder.Personal) // "My Document" Folder
- .R(Environment.SpecialFolder.ProgramFiles) // Program files Folder
- .R(Environment.SpecialFolder.Programs) // Programs Folder
- .R(Environment.SpecialFolder.Recent) // Recent Folder
- .R(Environment.SpecialFolder.SendTo) // "Sent to" Folder
- .R(Environment.SpecialFolder.StartMenu) // Start Menu
- .R(Environment.SpecialFolder.Startup) // Startup
- .R(Environment.SpecialFolder.System) // System Folder
- .R(Environment.SpecialFolder.Templates) // Document Templates
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.ApplicationData)// Current User's Application Data
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.CommonApplicationData) // All User's Application Data
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.CommonProgramFiles) // Program Files
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Cookies) // Internet Cookie
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Desktop) // Logical Desktop
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.DesktopDirectory) // Physical Desktop
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Favorites) // Favorites
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.History) // Internet History
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.InternetCache) // Internet Cache
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.MyComputer) // "My Computer" Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.MyDocuments) // "My Documents" Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.MyMusic) // "My Music" Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.MyPictures) // "My Pictures" Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Personal) // "My Document" Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.ProgramFiles) // Program files Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Programs) // Programs Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Recent) // Recent Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.SendTo) // "Sent to" Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.StartMenu) // Start Menu
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Startup) // Startup
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.System) // System Folder
+ .SubstituteSpecialFolderName(Environment.SpecialFolder.Templates) // Document Templates
;
}
}
@@ -537,9 +537,5 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS
#endregion BackupSQLDataBase class
}
- public static class StringExtension
- {
- public static string R(this string s, Environment.SpecialFolder n) { return s.Replace("@" + n.ToString() + "@", Environment.GetFolderPath(n)); }
- }
#endregion BackupPackage class
}
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs b/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
index 31325f1..dc77bc0 100644
--- a/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
+++ b/Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
@@ -862,11 +862,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
List backupfilepathlist = new List();
- foreach (var sqldata in sqld.Xml_SQLDataList)
+ foreach (var sqldata in sqld.Xml_SQLDataList)
{
vars[nameof(DBSubstitutionName.DBDATAGROUP)] = sqldata.Group;
- var sqlfilescreated = ScriptOneDataGroup(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldata.TableNameList, vars);
+ var sqlfilescreated = ScriptOneDataGroup(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldata.TableNameList, vars,out List errormessageList);
backupfilepathlist.AddRange(sqlfilescreated);
+ if (errormessageList != null && errormessageList.Any()) { foreach (var emsg in errormessageList) { ColorConsole.WriteLine("\n"+emsg, ConsoleColor.Red); } }
}
if (createZip)
@@ -876,8 +877,9 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
}
}
}
- private static List ScriptOneDataGroup(Server sqlserver, string backupdirectorypath, string backupfilenamemask, List tablenamelist, Dictionary vars)
+ private static List ScriptOneDataGroup(Server sqlserver, string backupdirectorypath, string backupfilenamemask, List tablenamelist, Dictionary vars,out List errormessageList)
{
+ errormessageList = new List();
string filename =null , filefullname=null, lastfilefullname = null;
var myscripter = new Microsoft.SqlServer.Management.Smo.Scripter();
myscripter.Server = sqlserver;
@@ -900,6 +902,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
var backupfilelist = new List();
var urnstoscript = new UrnCollection();
var deletefromlist = new List();
+ string errmsg;
+ bool success;
foreach (var tn in tablenamelist)
{
string tn_dbname = tn.Split('.')[0];
@@ -911,7 +915,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
filefullname = Path.Combine(backupdirectorypath, filename);
if (lastfilefullname!=filefullname && lastfilefullname!=null)
{
- backupfilelist.Add(CreateOneSqlFile(urnstoscript, deletefromlist,sqlserver, myscripter, lastfilefullname));
+ success = CreateOneSqlFile(urnstoscript, deletefromlist, sqlserver, myscripter, lastfilefullname, out errmsg);
+ if (success) { backupfilelist.Add(lastfilefullname); } else { errormessageList.Add(errmsg);}
lastfilefullname = filefullname;
deletefromlist.Clear();
urnstoscript.Clear();
@@ -922,17 +927,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS
urnstoscript.Add(new Microsoft.SqlServer.Management.Sdk.Sfc.Urn(urnstring));
lastfilefullname = filefullname;
}
- backupfilelist.Add(CreateOneSqlFile(urnstoscript, deletefromlist,sqlserver,myscripter,filefullname));
+ success = CreateOneSqlFile(urnstoscript, deletefromlist, sqlserver, myscripter, filefullname,out errmsg);
+ if (success) { backupfilelist.Add(filefullname); } else { errormessageList.Add(errmsg); }
return backupfilelist;
}
- private static string CreateOneSqlFile( UrnCollection urnstoscript,List deletefromlist,Server sqlserver,Scripter myscripter, string sqlfilefullname)
+ private static bool CreateOneSqlFile( UrnCollection urnstoscript,List deletefromlist,Server sqlserver,Scripter myscripter, string sqlfilefullname,out string errormessage)
{
+ errormessage = null;
myscripter.Options.FileName = sqlfilefullname;
- if (urnstoscript.Any()) { myscripter.EnumScript(urnstoscript); }
- var scripttext = File.ReadAllText(sqlfilefullname);
- deletefromlist = deletefromlist.Prepend($"use [{sqlserver.ConnectionContext.DatabaseName}]").ToList();
- File.WriteAllText(sqlfilefullname, string.Join("\r\n",deletefromlist) +"\r\n\r\n" + scripttext, Encoding.UTF8);//????????????????
- return sqlfilefullname;
+ try
+ {
+ if (urnstoscript.Any()) { myscripter.EnumScript(urnstoscript); }
+ var scripttext = File.ReadAllText(sqlfilefullname);
+ deletefromlist = deletefromlist.Prepend($"use [{sqlserver.ConnectionContext.DatabaseName}]").ToList();
+ File.WriteAllText(sqlfilefullname, string.Join("\r\n", deletefromlist) + "\r\n\r\n" + scripttext, Encoding.UTF8);//????????????????
+ return true;
+ }
+ catch (Exception ex)
+ {
+ errormessage=ex.MessageNested();
+ return false;
+ }
}
#endregion BackupSqlData
#endregion private methods
diff --git a/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs b/Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
index 2fd4c47..d65e6ee 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.2.2.0")]
-[assembly: AssemblyFileVersion("1.2.2.0")]
+[assembly: AssemblyVersion("1.2.3.0")]
+[assembly: AssemblyFileVersion("1.2.3.0")]
--
libgit2 0.21.2