diff --git a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/Nodes/TreeNode.cs b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/Nodes/TreeNode.cs index 4113f234..d202c48b 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/Nodes/TreeNode.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/Nodes/TreeNode.cs @@ -298,6 +298,10 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.Nodes } } } + catch(Exception ex) + { + Logger.Write(LogLevel.Error, $"Failed populating oe children error:{ex.Message} {ex.Source}"); + } finally { EndChildrenInit(); diff --git a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/ObjectExplorerService.cs b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/ObjectExplorerService.cs index 1e7ba342..6288434e 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/ObjectExplorerService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/ObjectExplorerService.cs @@ -183,7 +183,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer internal async Task DoCreateSession(ConnectionDetails connectionDetails, string uri) { ObjectExplorerSession session; - + connectionDetails.PersistSecurityInfo = true; ConnectParams connectParams = new ConnectParams() { OwnerUri = uri, Connection = connectionDetails }; ConnectionCompleteParams connectionResult = await Connect(connectParams); diff --git a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoColumnCustomNode.cs b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoColumnCustomNode.cs index 942c1dbe..a5f561d4 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoColumnCustomNode.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoColumnCustomNode.cs @@ -6,6 +6,7 @@ using System; using System.Globalization; using Microsoft.SqlServer.Management.Smo; +using Microsoft.SqlTools.Utility; namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel { @@ -55,19 +56,26 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel private static string GetCustomizedLabel(Column column, UserDefinedDataTypeCollection uddts) { - if (column.Computed) + try { - return GetComutedColumnLabel(column, uddts); + if (column.Computed) + { + return GetComputedColumnLabel(column, uddts); + } + else if (column.IsColumnSet) + { + return GetColumnSetLabel(column, uddts); + } + else + { + return GetSimpleColumnLabel(column, uddts); + } } - else if (column.IsColumnSet) + catch(Exception ex) { - return GetColumnSetLabel(column, uddts); + Logger.Write(LogLevel.Error, $"Failed to get customized column name. error:{ex.Message}"); } - else - { - return GetSimpleColumnLabel(column, uddts); - } - + return string.Empty; } private static string GetTypeSpecifierLabel(DataType dataType, UserDefinedDataTypeCollection uddts) @@ -88,10 +96,16 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel } - if(dataType.SqlDataType == SqlDataType.UserDefinedDataType && uddts != null && uddts.Contains(dataType.Name)) + if(dataType.SqlDataType == SqlDataType.UserDefinedDataType && uddts != null) { - var uddt = uddts[dataType.Name]; - typeName += $"({uddt.SystemType})"; + foreach (UserDefinedDataType item in uddts) + { + if(item.Name == dataType.Name) + { + typeName += $"({item.SystemType})"; + break; + } + } } // These types support Length @@ -214,7 +228,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel isNullable); } - private static string GetComutedColumnLabel(Column column, UserDefinedDataTypeCollection uddts) + private static string GetComputedColumnLabel(Column column, UserDefinedDataTypeCollection uddts) { string columnType = null; diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/ObjectExplorer/ObjectExplorerServiceTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/ObjectExplorer/ObjectExplorerServiceTests.cs index f26893dd..10adb8e7 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/ObjectExplorer/ObjectExplorerServiceTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/ObjectExplorer/ObjectExplorerServiceTests.cs @@ -208,7 +208,7 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.ObjectExplorer } catch (Exception ex) { - Console.WriteLine($"Failed to run OE test. uri:{uri} error:{ex.Message}"); + Console.WriteLine($"Failed to run OE test. uri:{uri} error:{ex.Message} {ex.StackTrace}"); Assert.False(true, ex.Message); } finally diff --git a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt index f5e55463..8702a053 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt +++ b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt @@ -1,3 +1,6 @@ +NodeType: Table Label: dbo.tableWithColumnset +NodeType: Column Label: i (int, null) +NodeType: Column Label: cs (Column Set, null) NodeType: Table Label: Employee_Temporal (System-Versioned) NodeType: Column Label: BusinessEntityID (PK, int, not null) NodeType: Column Label: NationalIDNumber (nvarchar(15), not null) diff --git a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/TestScripts/AllSqlObjects.sql b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/TestScripts/AllSqlObjects.sql index 5579185e..65f0793c 100644 Binary files a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/TestScripts/AllSqlObjects.sql and b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/TestScripts/AllSqlObjects.sql differ