Commit 08a28ecbf94b1d1b5a3edca41091cf21aca0f411
1 parent
1ff12b69
v1.31.4.0
-Script/SQLConnectionString= és SQLDataBase/SQLConnectionString= attributumokba vesszővel határolva lehet beírni a connstr neveket, amik közül választani lehet
Showing
2 changed files
with
121 additions
and
42 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
| ... | ... | @@ -112,7 +112,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 112 | 112 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 113 | 113 | try |
| 114 | 114 | { |
| 115 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 115 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 116 | 116 | SQLDataBaseManagerCore.BackupSqlData(sqld,TS); |
| 117 | 117 | ColorConsole.WriteLine($"SQLDB data scripts created. Name:{sqld.Xml_Description}", ConsoleColor.Green); |
| 118 | 118 | } |
| ... | ... | @@ -142,7 +142,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 142 | 142 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 143 | 143 | try |
| 144 | 144 | { |
| 145 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 145 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 146 | 146 | SQLDataBaseManagerCore.BackupSqlScripts(sqld,TS); |
| 147 | 147 | ColorConsole.WriteLine($"SQLDB code scripts created. Name:{sqld.Xml_Description}", ConsoleColor.Green); |
| 148 | 148 | } |
| ... | ... | @@ -172,7 +172,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 172 | 172 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 173 | 173 | try |
| 174 | 174 | { |
| 175 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 175 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 176 | 176 | SQLDataBaseManagerCore.CreateBackup(sqld,null,TS); |
| 177 | 177 | ColorConsole.WriteLine($"Database backup created. Name:{sqld.DBName}", ConsoleColor.Green); |
| 178 | 178 | } |
| ... | ... | @@ -180,10 +180,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 180 | 180 | } |
| 181 | 181 | return o; |
| 182 | 182 | } |
| 183 | - private static bool FunctionIsNotAvailable(SQLDataBase ssqldb) | |
| 183 | + private static bool NoDBNameSpecified(SQLDataBase ssqldb) | |
| 184 | 184 | { |
| 185 | 185 | const string FUNNOTAVAILTXT = "Function is not available for server connection strings wit no DB name specified!"; |
| 186 | - if (string.IsNullOrWhiteSpace(SQLDataBaseManagerCore.GetDBName(ssqldb.SQLCS))) { ColorConsole.WriteLine(FUNNOTAVAILTXT, ConsoleColor.Red); return true; } | |
| 186 | + if (string.IsNullOrWhiteSpace(SQLDataBaseManagerCore.GetDBName(ssqldb.SQLCS))) { ColorConsole.WriteLine(FUNNOTAVAILTXT, ConsoleColor.Red); ssqldb.DBName = "master"; return true; } | |
| 187 | 187 | return false; |
| 188 | 188 | } |
| 189 | 189 | private static object RestoreDataBase(object parameter, object o) |
| ... | ... | @@ -208,7 +208,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 208 | 208 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 209 | 209 | try |
| 210 | 210 | { |
| 211 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 211 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 212 | 212 | var targetdirectorypath = sqld.Xml_PhysicalFilesDirectoryPath; |
| 213 | 213 | var targetdbname = sqld.DBName; |
| 214 | 214 | bool restorefromzip = sqld.Xml_CreateZip; |
| ... | ... | @@ -505,7 +505,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 505 | 505 | |
| 506 | 506 | var p = sr.SelectedParameterList.FirstOrDefault(); |
| 507 | 507 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 508 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 508 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 509 | 509 | |
| 510 | 510 | getparametersloop: |
| 511 | 511 | List<SQLDataBase.DBUser> DbusrToExecuteList = new List<SQLDataBase.DBUser>(); |
| ... | ... | @@ -656,8 +656,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS |
| 656 | 656 | var DateTimeNow = DateTime.Now; |
| 657 | 657 | |
| 658 | 658 | movedbanswer = YesOrNo_MoveDbToRemoteServer(config, selectedsqldbindexes); |
| 659 | - if (FunctionIsNotAvailable(movedbanswer.Dbfrom)) { continue; } | |
| 660 | - if (FunctionIsNotAvailable(movedbanswer.Dbto)) { continue; } | |
| 659 | + if (NoDBNameSpecified(movedbanswer.Dbfrom)) { continue; } | |
| 660 | + if (NoDBNameSpecified(movedbanswer.Dbto)) { continue; } | |
| 661 | 661 | if (movedbanswer.Exit) break; |
| 662 | 662 | if (movedbanswer.Yes) |
| 663 | 663 | { |
| ... | ... | @@ -827,7 +827,7 @@ GO |
| 827 | 827 | var p = sr.SelectedParameterList.FirstOrDefault(); |
| 828 | 828 | if (p == null) { return o; } |
| 829 | 829 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 830 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 830 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 831 | 831 | |
| 832 | 832 | getparametersloop:; |
| 833 | 833 | |
| ... | ... | @@ -1031,6 +1031,7 @@ GO |
| 1031 | 1031 | ReturnInfoJSON result = null; |
| 1032 | 1032 | using (var sqlc = ServerConnectionPool.GetSqlConnection(ss.SQLCS, open: true)) |
| 1033 | 1033 | { |
| 1034 | + if (string.IsNullOrWhiteSpace(sqlc.Database)) { sqlc.ChangeDatabase("master"); } | |
| 1034 | 1035 | if (multirunmode) { result = SQLDataBaseManagerCore.ExecuteMultirunSQLScript(sqlc, ss, ExitAtThisPoint); } |
| 1035 | 1036 | else |
| 1036 | 1037 | { |
| ... | ... | @@ -1099,7 +1100,7 @@ GO |
| 1099 | 1100 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 1100 | 1101 | try |
| 1101 | 1102 | { |
| 1102 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 1103 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 1103 | 1104 | ColorConsole.WriteLine(prefix: $"Enter the userid/password (for the user in favour you want to drop the DB). Format:", bracket: "()", text: "[USERID[,PASSWORD]]:", f: ConsoleColor.Yellow); |
| 1104 | 1105 | ColorConsole.WriteLine(prefix: " ", text: "[USERID,PASSWORD empty]", bracket: "[]", suffix: $":use windows authentication with current user", f: ConsoleColor.Yellow); |
| 1105 | 1106 | ColorConsole.WriteLine(prefix: " ", text: "USERID", bracket: "[]", suffix: $":use windows authentication with this user", f: ConsoleColor.Yellow); |
| ... | ... | @@ -1185,7 +1186,7 @@ GO |
| 1185 | 1186 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 1186 | 1187 | try |
| 1187 | 1188 | { |
| 1188 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 1189 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 1189 | 1190 | ColorConsole.WriteLine(prefix: $"Enter the shrink options. Format:", bracket:"()", text:"OPTION,FreeSpacePercent:", f:ConsoleColor.Yellow); |
| 1190 | 1191 | ColorConsole.WriteLine(prefix:" ", text:"Default", bracket: "[]", suffix: $": (default) compacts the data and removes free space from the DB. Use togethere with FreeSpacePercent.", f:ConsoleColor.Yellow); |
| 1191 | 1192 | ColorConsole.WriteLine(prefix: " ", text: "NoTruncate",bracket:"[]", suffix: $": compacts the data, but does not remove free space from the DB. FreeSpacePercent is not applicable.", f: ConsoleColor.Yellow); |
| ... | ... | @@ -1229,7 +1230,7 @@ GO |
| 1229 | 1230 | SQLDataBase sqld = p.Parameters as SQLDataBase; |
| 1230 | 1231 | try |
| 1231 | 1232 | { |
| 1232 | - if (FunctionIsNotAvailable(sqld)) { return o; } | |
| 1233 | + if (NoDBNameSpecified(sqld)) { return o; } | |
| 1233 | 1234 | var restoredbname = ColorConsole.ReadLine($"Enter the name of the DB to copy '{sqld.DBName}' to. Empty={sqld.DBName}. EX=exit.", ConsoleColor.Yellow, suffix: " --> "); |
| 1234 | 1235 | if (restoredbname.ToUpper() == "EX") { continue; } |
| 1235 | 1236 | else if (string.IsNullOrWhiteSpace(restoredbname)) { restoredbname = sqld.DBName; } |
| ... | ... | @@ -1301,6 +1302,7 @@ GO |
| 1301 | 1302 | } |
| 1302 | 1303 | else if (lineix == 2) |
| 1303 | 1304 | { |
| 1305 | + if (!st.isSQLCSselected) { return Menu.MenuItemDisplayerReturnValue.SAMELINE; } | |
| 1304 | 1306 | ColorConsole.Write($"{st.SQLCS}", ConsoleColor.Yellow, prefix: "SQL DB connection:", suffix: ", "); |
| 1305 | 1307 | ColorConsole.WriteLine(" "); |
| 1306 | 1308 | return Menu.MenuItemDisplayerReturnValue.NEXTLINE; |
| ... | ... | @@ -2637,10 +2639,42 @@ GO |
| 2637 | 2639 | public SQLDBStatus Status; |
| 2638 | 2640 | public string PhysicalFilesDirectoryPath; |
| 2639 | 2641 | public string SizeString; |
| 2642 | + public bool isSQLCSselected | |
| 2643 | + { | |
| 2644 | + get | |
| 2645 | + { | |
| 2646 | + var sqlcsList = this.Xml_SQLConnectionString.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); | |
| 2647 | + return sqlcsList.Count() == 1 || !string.IsNullOrWhiteSpace(this.Xml_SQLConnectionStringSelected); | |
| 2648 | + } | |
| 2649 | + } | |
| 2640 | 2650 | public string SQLCS |
| 2641 | 2651 | { |
| 2642 | - get { return XmlProcessing.ConnectionStringStore.GetSQL(this.Xml_SQLConnectionString); } | |
| 2652 | + get | |
| 2653 | + { | |
| 2654 | + if (string.IsNullOrWhiteSpace(this.Xml_SQLConnectionStringSelected)) { SelectSQLConnectionString(); } | |
| 2655 | + if (string.IsNullOrWhiteSpace(this.Xml_SQLConnectionStringSelected)) { return null; } | |
| 2656 | + return XmlProcessing.ConnectionStringStore.GetSQL(this.Xml_SQLConnectionStringSelected); | |
| 2657 | + } | |
| 2643 | 2658 | } |
| 2659 | + private string Xml_SQLConnectionStringSelected; | |
| 2660 | + | |
| 2661 | + public void SelectSQLConnectionString(int? forceselection=null) | |
| 2662 | + { | |
| 2663 | + this.Xml_SQLConnectionStringSelected = null; | |
| 2664 | + var sqlcsList = this.Xml_SQLConnectionString.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); | |
| 2665 | + if (forceselection.HasValue) | |
| 2666 | + { | |
| 2667 | + if (forceselection.Value >=0 && sqlcsList.Count() > forceselection.Value) { this.Xml_SQLConnectionStringSelected = sqlcsList[forceselection.Value]; } | |
| 2668 | + return; | |
| 2669 | + } | |
| 2670 | + else | |
| 2671 | + { | |
| 2672 | + if (sqlcsList.Count() == 1) { this.Xml_SQLConnectionStringSelected = sqlcsList[0]; return; } | |
| 2673 | + var selection = ColorConsole.ReadLine("Select SQL connection string to use:", bracket: "[]", suffix: "ENTER==first", validitylist: sqlcsList); | |
| 2674 | + if (selection == "EX") return; | |
| 2675 | + if (string.IsNullOrWhiteSpace(selection)) { this.Xml_SQLConnectionStringSelected = sqlcsList[0]; } else { this.Xml_SQLConnectionStringSelected = selection; } | |
| 2676 | + } | |
| 2677 | + } | |
| 2644 | 2678 | #endregion fields |
| 2645 | 2679 | public enum SQLDBStatus { NoAccess, OK, } |
| 2646 | 2680 | |
| ... | ... | @@ -2649,29 +2683,44 @@ GO |
| 2649 | 2683 | { |
| 2650 | 2684 | try |
| 2651 | 2685 | { |
| 2652 | - string dbname = SQLDataBaseManagerCore.GetDBName(this.SQLCS); | |
| 2653 | - if (string.IsNullOrWhiteSpace(dbname)) | |
| 2686 | + if (!this.isSQLCSselected) | |
| 2654 | 2687 | { |
| 2655 | - var sqlc = ServerConnectionPool.GetSqlConnection(this.SQLCS, open: true); | |
| 2656 | - this.Status = SQLDBStatus.OK; | |
| 2657 | - this.DBName = ""; | |
| 2658 | - this.DataSource = SQLDataBaseManagerCore.GetDataSource(this.SQLCS); | |
| 2659 | - } | |
| 2660 | - else | |
| 2688 | + this.Status = SQLDBStatus.OK; | |
| 2689 | + this.DBName = ""; | |
| 2690 | + this.DataSource = this.Xml_SQLConnectionString; | |
| 2691 | + } | |
| 2692 | + else | |
| 2661 | 2693 | { |
| 2662 | - GetPhysicalFilesLocationAndSize(this.SQLCS, out this.SizeString, out this.PhysicalFilesDirectoryPath); | |
| 2663 | - this.Status = this.PhysicalFilesDirectoryPath.StartsWith("ERR") ? SQLDBStatus.NoAccess : SQLDBStatus.OK; | |
| 2664 | - this.DBName = SQLDataBaseManagerCore.GetDBName(this.SQLCS); | |
| 2665 | - this.DataSource = SQLDataBaseManagerCore.GetDataSource(this.SQLCS); | |
| 2666 | - } | |
| 2694 | + string dbname = SQLDataBaseManagerCore.GetDBName(this.SQLCS); | |
| 2695 | + if (string.IsNullOrWhiteSpace(dbname)) | |
| 2696 | + { | |
| 2697 | + var sqlc = ServerConnectionPool.GetSqlConnection(this.SQLCS, open: true); | |
| 2698 | + this.Status = SQLDBStatus.OK; | |
| 2699 | + this.DBName = ""; | |
| 2700 | + this.DataSource = SQLDataBaseManagerCore.GetDataSource(this.SQLCS); | |
| 2701 | + } | |
| 2702 | + else | |
| 2703 | + { | |
| 2704 | + GetPhysicalFilesLocationAndSize(this.SQLCS, out this.SizeString, out this.PhysicalFilesDirectoryPath); | |
| 2705 | + this.Status = this.PhysicalFilesDirectoryPath.StartsWith("ERR") ? SQLDBStatus.NoAccess : SQLDBStatus.OK; | |
| 2706 | + this.DBName = SQLDataBaseManagerCore.GetDBName(this.SQLCS); | |
| 2707 | + this.DataSource = SQLDataBaseManagerCore.GetDataSource(this.SQLCS); | |
| 2708 | + } | |
| 2709 | + } | |
| 2667 | 2710 | } |
| 2668 | 2711 | catch |
| 2669 | 2712 | { |
| 2670 | 2713 | this.Status = SQLDBStatus.NoAccess; |
| 2671 | 2714 | this.PhysicalFilesDirectoryPath = ""; |
| 2672 | - this.DBName = SQLDataBaseManagerCore.GetDBName(this.SQLCS); | |
| 2673 | - this.DataSource = SQLDataBaseManagerCore.GetDataSource(this.SQLCS); | |
| 2674 | - this.SizeString = ""; | |
| 2715 | + this.DBName = ""; | |
| 2716 | + this.DataSource = ""; | |
| 2717 | + this.SizeString = ""; | |
| 2718 | + try | |
| 2719 | + { | |
| 2720 | + this.DBName = SQLDataBaseManagerCore.GetDBName(this.SQLCS); | |
| 2721 | + this.DataSource = SQLDataBaseManagerCore.GetDataSource(this.SQLCS); | |
| 2722 | + } | |
| 2723 | + catch { } | |
| 2675 | 2724 | } |
| 2676 | 2725 | return this; |
| 2677 | 2726 | } |
| ... | ... | @@ -2909,9 +2958,41 @@ GO |
| 2909 | 2958 | public string ScriptParameters=null; |
| 2910 | 2959 | public string MultirunParameters=null; |
| 2911 | 2960 | public string SQLConnectionString=null; |
| 2961 | + private string SQLConnectionStringSelected=null; | |
| 2962 | + public bool isSQLCSselected | |
| 2963 | + { | |
| 2964 | + get | |
| 2965 | + { | |
| 2966 | + var sqlcsList = this.SQLConnectionString.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); | |
| 2967 | + return sqlcsList.Count() == 1 || !string.IsNullOrWhiteSpace(this.SQLConnectionStringSelected); | |
| 2968 | + } | |
| 2969 | + } | |
| 2912 | 2970 | public string SQLCS |
| 2913 | 2971 | { |
| 2914 | - get { return XmlProcessing.ConnectionStringStore.GetSQL(this.SQLConnectionString); } | |
| 2972 | + get | |
| 2973 | + { | |
| 2974 | + if (string.IsNullOrWhiteSpace(this.SQLConnectionStringSelected)) { SelectSQLConnectionString(); } | |
| 2975 | + if (string.IsNullOrWhiteSpace(this.SQLConnectionStringSelected)) { return null; } | |
| 2976 | + return XmlProcessing.ConnectionStringStore.GetSQL(this.SQLConnectionStringSelected); | |
| 2977 | + } | |
| 2978 | + } | |
| 2979 | + | |
| 2980 | + public void SelectSQLConnectionString(int? forceselection = null) | |
| 2981 | + { | |
| 2982 | + this.SQLConnectionStringSelected = null; | |
| 2983 | + var sqlcsList = this.SQLConnectionString.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); | |
| 2984 | + if (forceselection.HasValue) | |
| 2985 | + { | |
| 2986 | + if (forceselection.Value >= 0 && sqlcsList.Count() > forceselection.Value) { this.SQLConnectionStringSelected = sqlcsList[forceselection.Value]; } | |
| 2987 | + return; | |
| 2988 | + } | |
| 2989 | + else | |
| 2990 | + { | |
| 2991 | + if (sqlcsList.Count() == 1) { this.SQLConnectionStringSelected = sqlcsList[0]; return; } | |
| 2992 | + var selection = ColorConsole.ReadLine("Select SQL connection string to use:", bracket: "[]", suffix: "[ENTER]==first", validitylist: sqlcsList); | |
| 2993 | + if (selection == "EX") return; | |
| 2994 | + if (string.IsNullOrWhiteSpace(selection)) { this.SQLConnectionStringSelected = sqlcsList[0]; } else { this.SQLConnectionStringSelected = selection; } | |
| 2995 | + } | |
| 2915 | 2996 | } |
| 2916 | 2997 | |
| 2917 | 2998 | public SQLScript() { } |
| ... | ... | @@ -3066,7 +3147,8 @@ GO |
| 3066 | 3147 | { |
| 3067 | 3148 | var scb = new SqlConnectionStringBuilder(sqlconnectionstring); |
| 3068 | 3149 | if (!string.IsNullOrWhiteSpace(dbname)) { scb.InitialCatalog = dbname; } |
| 3069 | - if (!string.IsNullOrWhiteSpace(userid) && !string.IsNullOrWhiteSpace(userpassword)) { scb.UserID = userid; scb.Password = userpassword; } | |
| 3150 | + if (string.IsNullOrWhiteSpace(scb.InitialCatalog)) { scb.InitialCatalog = "master"; scb.AttachDBFilename = ""; } | |
| 3151 | + if (!string.IsNullOrWhiteSpace(userid) && !string.IsNullOrWhiteSpace(userpassword)) { scb.UserID = userid; scb.Password = userpassword; } | |
| 3070 | 3152 | else if (!string.IsNullOrWhiteSpace(userid) && string.IsNullOrWhiteSpace(userpassword)) { scb.UserID = userid; scb.IntegratedSecurity = true; } |
| 3071 | 3153 | var sqlc = new SqlConnection(scb.ToString()); |
| 3072 | 3154 | if (open) Open(sqlc); |
| ... | ... | @@ -3075,15 +3157,12 @@ GO |
| 3075 | 3157 | public static void Open(SqlConnection sqlc) |
| 3076 | 3158 | { |
| 3077 | 3159 | if (IsMasterInacessible(sqlc) || IsInacessible(sqlc)) { throw new Exception($"SQL server {sqlc.DataSource} is inaccessible!"); } |
| 3078 | - if (!string.IsNullOrWhiteSpace(sqlc.Database)) | |
| 3160 | + try { sqlc.Open(); } | |
| 3161 | + catch (Exception ex) | |
| 3079 | 3162 | { |
| 3080 | - try { sqlc.Open(); } | |
| 3081 | - catch (Exception ex) | |
| 3082 | - { | |
| 3083 | - MarkMasterInacessible(sqlc); | |
| 3084 | - MarkInacessible(sqlc); | |
| 3085 | - throw ex; | |
| 3086 | - } | |
| 3163 | + MarkMasterInacessible(sqlc); | |
| 3164 | + MarkInacessible(sqlc); | |
| 3165 | + throw ex; | |
| 3087 | 3166 | } |
| 3088 | 3167 | } |
| 3089 | 3168 | private static bool IsMasterDBConnected(SqlConnection sqlc) | ... | ... |
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.31.3.0")] | |
| 36 | -[assembly: AssemblyFileVersion("1.31.3.0")] | |
| 35 | +[assembly: AssemblyVersion("1.31.4.0")] | |
| 36 | +[assembly: AssemblyFileVersion("1.31.4.0")] | ... | ... |