mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 10:58:30 -05:00
Adding Support for new engine edition (#876)
* Adding Support for SqlOnDemand * Updating unit test per comment * Resolving comments. Enabling external table for sqlondemand * Resolving comments. Enabling External tables for sqlondemand * Enabling external tables for sqlondemand
This commit is contained in:
committed by
GitHub
parent
6f17c15d2c
commit
962ba3a12b
@@ -23,7 +23,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
<#
|
<#
|
||||||
var directory = Path.GetDirectoryName(Host.TemplateFile);
|
var directory = Path.GetDirectoryName(Host.TemplateFile);
|
||||||
string xmlFile = Path.Combine(directory, "SmoQueryModelDefinition.xml");
|
string xmlFile = Path.Combine(directory, "SmoQueryModelDefinition.xml");
|
||||||
|
|
||||||
/////////
|
/////////
|
||||||
// Now generate all the Query methods
|
// Now generate all the Query methods
|
||||||
/////////
|
/////////
|
||||||
@@ -58,7 +58,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
WriteLine("");
|
WriteLine("");
|
||||||
|
|
||||||
// Query impl
|
// Query impl
|
||||||
WriteLine("public override IEnumerable<SqlSmoObject> Query(SmoQueryContext context, string filter, bool refresh, IEnumerable<string> extraProperties)");
|
WriteLine("public override IEnumerable<SqlSmoObject> Query(SmoQueryContext context, string filter, bool refresh, IEnumerable<string> extraProperties)");
|
||||||
WriteLine("{");
|
WriteLine("{");
|
||||||
PushIndent(indent);
|
PushIndent(indent);
|
||||||
|
|
||||||
@@ -157,7 +157,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
}
|
}
|
||||||
return typesList.ToArray();
|
return typesList.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static XmlElement GetNodeElement(string xmlFile, string nodeName)
|
public static XmlElement GetNodeElement(string xmlFile, string nodeName)
|
||||||
{
|
{
|
||||||
XmlDocument doc = new XmlDocument();
|
XmlDocument doc = new XmlDocument();
|
||||||
@@ -250,69 +250,77 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/SmoQueryModel/Node[@Name='{0}']/{1}", parentName, childNode));
|
XmlNodeList nodeList = doc.SelectNodes(string.Format("/SmoQueryModel/Node[@Name='{0}']/{1}", parentName, childNode));
|
||||||
foreach (var item in nodeList)
|
foreach (var item in nodeList)
|
||||||
{
|
{
|
||||||
XmlElement itemAsElement = item as XmlElement;
|
XmlElement itemAsElement = item as XmlElement;
|
||||||
if (itemAsElement != null)
|
if (itemAsElement != null)
|
||||||
{
|
{
|
||||||
retElements.Add(itemAsElement);
|
retElements.Add(itemAsElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retElements;
|
return retElements;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetValidForFlags(string validForStr)
|
public static string GetValidForFlags(string validForStr)
|
||||||
{
|
{
|
||||||
List<string> flags = new List<string>();
|
List<string> flags = new List<string>();
|
||||||
if (validForStr.Contains("Sql2005"))
|
if (validForStr.Contains("Sql2005"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2005");
|
flags.Add("ValidForFlag.Sql2005");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2008"))
|
if (validForStr.Contains("Sql2008"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2008");
|
flags.Add("ValidForFlag.Sql2008");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2012"))
|
if (validForStr.Contains("Sql2012"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2012");
|
flags.Add("ValidForFlag.Sql2012");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2014"))
|
if (validForStr.Contains("Sql2014"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2014");
|
flags.Add("ValidForFlag.Sql2014");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2016"))
|
if (validForStr.Contains("Sql2016"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2016");
|
flags.Add("ValidForFlag.Sql2016");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2017"))
|
if (validForStr.Contains("Sql2017"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2017");
|
flags.Add("ValidForFlag.Sql2017");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("AzureV12"))
|
if (validForStr.Contains("AzureV12"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.AzureV12");
|
flags.Add("ValidForFlag.AzureV12");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("AllOnPrem"))
|
if (validForStr.Contains("AllOnPrem"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.AllOnPrem");
|
flags.Add("ValidForFlag.AllOnPrem");
|
||||||
}
|
}
|
||||||
if (validForStr.Contains("AllAzure"))
|
if (validForStr.Contains("AllAzure"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.AllAzure");
|
flags.Add("ValidForFlag.AllAzure");
|
||||||
}
|
}
|
||||||
if (validForStr.Contains("NotSqlDw"))
|
if (validForStr.Contains("NotSqlDw"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.NotSqlDw");
|
flags.Add("ValidForFlag.NotSqlDw");
|
||||||
}
|
}
|
||||||
if (validForStr == "All")
|
if (validForStr.Contains("SqlOnDemand"))
|
||||||
{
|
{
|
||||||
|
flags.Add("ValidForFlag.SqlOnDemand");
|
||||||
|
}
|
||||||
|
if (validForStr == "NotSqlDemand")
|
||||||
|
{
|
||||||
|
flags.Add("ValidForFlag.NotSqlDemand");
|
||||||
|
}
|
||||||
|
if (validForStr == "All")
|
||||||
|
{
|
||||||
flags.Add("ValidForFlag.All");
|
flags.Add("ValidForFlag.All");
|
||||||
}
|
}
|
||||||
|
|
||||||
return string.Join("|", flags);
|
return string.Join("|", flags);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
<Node Name="ServerLevelLinkedServerLogins" LocLabel="SR.SchemaHierarchy_LinkedServerLogins" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelLinkedServerLogin" ChildQuerierTypes="SqlLinkedServerLogin" ValidFor="AllOnPrem"/>
|
<Node Name="ServerLevelLinkedServerLogins" LocLabel="SR.SchemaHierarchy_LinkedServerLogins" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelLinkedServerLogin" ChildQuerierTypes="SqlLinkedServerLogin" ValidFor="AllOnPrem"/>
|
||||||
<Node Name="ServerLevelLogins" LocLabel="SR.SchemaHierarchy_Logins" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelLogin" ChildQuerierTypes="SqlLogin"/>
|
<Node Name="ServerLevelLogins" LocLabel="SR.SchemaHierarchy_Logins" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelLogin" ChildQuerierTypes="SqlLogin"/>
|
||||||
<Node Name="ServerLevelServerRoles" LocLabel="SR.SchemaHierarchy_ServerRoles" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerRole" ChildQuerierTypes="SqlServerRole" ValidFor="AllOnPrem"/>
|
<Node Name="ServerLevelServerRoles" LocLabel="SR.SchemaHierarchy_ServerRoles" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerRole" ChildQuerierTypes="SqlServerRole" ValidFor="AllOnPrem|SqlOnDemand"/>
|
||||||
<Node Name="ServerLevelCredentials" LocLabel="SR.SchemaHierarchy_Credentials" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelCredential" ChildQuerierTypes="SqlCredential" ValidFor="AllOnPrem"/>
|
<Node Name="ServerLevelCredentials" LocLabel="SR.SchemaHierarchy_Credentials" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelCredential" ChildQuerierTypes="SqlCredential" ValidFor="AllOnPrem"/>
|
||||||
<Node Name="ServerLevelCryptographicProviders" LocLabel="SR.SchemaHierarchy_CryptographicProviders" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelCryptographicProvider" ChildQuerierTypes="SqlCryptographicProvider" ValidFor="AllOnPrem"/>
|
<Node Name="ServerLevelCryptographicProviders" LocLabel="SR.SchemaHierarchy_CryptographicProviders" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelCryptographicProvider" ChildQuerierTypes="SqlCryptographicProvider" ValidFor="AllOnPrem"/>
|
||||||
<Node Name="ServerLevelServerAudits" LocLabel="SR.SchemaHierarchy_ServerAudits" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerAudit" ChildQuerierTypes="SqlServerAudit" ValidFor="AllOnPrem"/>
|
<Node Name="ServerLevelServerAudits" LocLabel="SR.SchemaHierarchy_ServerAudits" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="ServerLevelServerAudit" ChildQuerierTypes="SqlServerAudit" ValidFor="AllOnPrem"/>
|
||||||
@@ -85,6 +85,7 @@
|
|||||||
<Property Name="IsExternal" ValidFor="Sql2016|Sql2017|AzureV12"/>
|
<Property Name="IsExternal" ValidFor="Sql2016|Sql2017|AzureV12"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
<Child Name="SystemTables" IsSystemObject="1"/>
|
<Child Name="SystemTables" IsSystemObject="1"/>
|
||||||
|
<Child Name="ExternalTables"/>
|
||||||
</Node>
|
</Node>
|
||||||
|
|
||||||
<Node Name="Views" LocLabel="SR.SchemaHierarchy_Views" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlView" TreeNode="ViewTreeNode">
|
<Node Name="Views" LocLabel="SR.SchemaHierarchy_Views" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlView" TreeNode="ViewTreeNode">
|
||||||
@@ -107,7 +108,7 @@
|
|||||||
-->
|
-->
|
||||||
<Child Name="Sequences"/>
|
<Child Name="Sequences"/>
|
||||||
</Node>
|
</Node>
|
||||||
<Node Name="ExternalResources" LocLabel="SR.SchemaHierarchy_ExternalResources" BaseClass="ModelBased" TreeNode="ExternalResourceTreeNode" ValidFor="Sql2016|Sql2017|AzureV12">
|
<Node Name="ExternalResources" LocLabel="SR.SchemaHierarchy_ExternalResources" BaseClass="ModelBased" TreeNode="ExternalResourceTreeNode" ValidFor="Sql2016|Sql2017|AzureV12|SqlOnDemand">
|
||||||
<Child Name="ExternalDataSources"/>
|
<Child Name="ExternalDataSources"/>
|
||||||
<Child Name="ExternalFileFormats"/>
|
<Child Name="ExternalFileFormats"/>
|
||||||
</Node>
|
</Node>
|
||||||
@@ -160,12 +161,13 @@
|
|||||||
<Filter Property="IsFileTable" Value="1" Type="bool" />
|
<Filter Property="IsFileTable" Value="1" Type="bool" />
|
||||||
</Filters>
|
</Filters>
|
||||||
</Node>
|
</Node>
|
||||||
<Node Name="ExternalTables" LocLabel="SR.SchemaHierarchy_ExternalTables" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable" TreeNode="ExternalTableTreeNode" ValidFor="Sql2016|Sql2017|AzureV12">
|
-->
|
||||||
|
<Node Name="ExternalTables" LocLabel="SR.SchemaHierarchy_ExternalTables" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable" TreeNode="ExternalTableTreeNode" ValidFor="SqlOnDemand">
|
||||||
<Filters >
|
<Filters >
|
||||||
<Filter Property="IsExternal" Value="1" Type="bool" />
|
<Filter Property="IsExternal" Value="1" Type="bool" />
|
||||||
</Filters>
|
</Filters>
|
||||||
</Node>
|
</Node>
|
||||||
-->
|
|
||||||
<Node Name="Table" LocLabel="string.Empty" BaseClass="ModelBased" IsAsyncLoad="" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable;SqlHistoryTable" TreeNode="HistoryTableTreeNode">
|
<Node Name="Table" LocLabel="string.Empty" BaseClass="ModelBased" IsAsyncLoad="" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlTable;SqlHistoryTable" TreeNode="HistoryTableTreeNode">
|
||||||
<Filters>
|
<Filters>
|
||||||
<Filter TypeToReverse="SqlHistoryTable" Property="TemporalType" Type="Enum" ValidFor="Sql2016|Sql2017|AzureV12">
|
<Filter TypeToReverse="SqlHistoryTable" Property="TemporalType" Type="Enum" ValidFor="Sql2016|Sql2017|AzureV12">
|
||||||
@@ -189,7 +191,6 @@
|
|||||||
<Child Name="Statistics"/>
|
<Child Name="Statistics"/>
|
||||||
</Node>
|
</Node>
|
||||||
|
|
||||||
<!-- TODO This should use display item not ChildQuerierTypes -->
|
|
||||||
<Node Name="ExternalTable" LocLabel="string.Empty" BaseClass="ModelBased" IsAsyncLoad="" Strategy="PopulateDetails" NodeType="Table" ChildQuerierTypes="SqlTable" ValidFor="Sql2016|Sql2017|AzureV12">
|
<Node Name="ExternalTable" LocLabel="string.Empty" BaseClass="ModelBased" IsAsyncLoad="" Strategy="PopulateDetails" NodeType="Table" ChildQuerierTypes="SqlTable" ValidFor="Sql2016|Sql2017|AzureV12">
|
||||||
<Child Name="Columns"/>
|
<Child Name="Columns"/>
|
||||||
<Child Name="Statistics"/>
|
<Child Name="Statistics"/>
|
||||||
@@ -207,7 +208,7 @@
|
|||||||
</Node>
|
</Node>
|
||||||
<Node Name="Constraints" LocLabel="SR.SchemaHierarchy_Constraints" BaseClass="ModelBased" NodeType="Constraint" Strategy="ElementsInRelationship" ChildQuerierTypes="SqlDefaultConstraint;SqlCheck"/>
|
<Node Name="Constraints" LocLabel="SR.SchemaHierarchy_Constraints" BaseClass="ModelBased" NodeType="Constraint" Strategy="ElementsInRelationship" ChildQuerierTypes="SqlDefaultConstraint;SqlCheck"/>
|
||||||
<Node Name="Triggers" LocLabel="SR.SchemaHierarchy_Triggers" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Trigger" ChildQuerierTypes="SqlDmlTrigger" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
<Node Name="Triggers" LocLabel="SR.SchemaHierarchy_Triggers" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Trigger" ChildQuerierTypes="SqlDmlTrigger" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
||||||
<Node Name="Indexes" LocLabel="SR.SchemaHierarchy_Indexes" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Index" ChildQuerierTypes="SqlIndex;SqlFullTextIndex">
|
<Node Name="Indexes" LocLabel="SR.SchemaHierarchy_Indexes" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Index" ChildQuerierTypes="SqlIndex;SqlFullTextIndex" ValidFor="NotSqlDemand">
|
||||||
<Filters>
|
<Filters>
|
||||||
<Filter TypeToReverse="SqlIndex" Property="IndexKeyType" Type="Enum" ValidFor="AllOnPrem|AzureV12">
|
<Filter TypeToReverse="SqlIndex" Property="IndexKeyType" Type="Enum" ValidFor="AllOnPrem|AzureV12">
|
||||||
<Value>IndexKeyType.None</Value>
|
<Value>IndexKeyType.None</Value>
|
||||||
@@ -216,7 +217,7 @@
|
|||||||
</Filter>
|
</Filter>
|
||||||
</Filters>
|
</Filters>
|
||||||
</Node>
|
</Node>
|
||||||
<Node Name="Statistics" LocLabel="SR.SchemaHierarchy_Statistics" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Statistic" ChildQuerierTypes="SqlStatistic"/>
|
<Node Name="Statistics" LocLabel="SR.SchemaHierarchy_Statistics" BaseClass="ModelBased" Strategy="ElementsInRelationship" NodeType="Statistic" ChildQuerierTypes="SqlStatistic" ValidFor="NotSqlDemand"/>
|
||||||
|
|
||||||
<Node Name="SystemViews" LocLabel="SR.SchemaHierarchy_SystemViews" BaseClass="ModelBased" IsMsShippedOwned="true" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlView" TreeNode="ViewTreeNode">
|
<Node Name="SystemViews" LocLabel="SR.SchemaHierarchy_SystemViews" BaseClass="ModelBased" IsMsShippedOwned="true" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlView" TreeNode="ViewTreeNode">
|
||||||
<Filters>
|
<Filters>
|
||||||
@@ -231,7 +232,7 @@
|
|||||||
<Child Name="Statistics"/>
|
<Child Name="Statistics"/>
|
||||||
</Node>
|
</Node>
|
||||||
|
|
||||||
<Node Name="Functions" LocLabel="SR.SchemaHierarchy_Functions" BaseClass="ModelBased" >
|
<Node Name="Functions" LocLabel="SR.SchemaHierarchy_Functions" BaseClass="ModelBased" ValidFor="NotSqlDemand">
|
||||||
<Child Name="SystemFunctions" IsSystemObject="1"/>
|
<Child Name="SystemFunctions" IsSystemObject="1"/>
|
||||||
<Child Name="TableValuedFunctions"/>
|
<Child Name="TableValuedFunctions"/>
|
||||||
<Child Name="ScalarValuedFunctions"/>
|
<Child Name="ScalarValuedFunctions"/>
|
||||||
@@ -245,7 +246,7 @@
|
|||||||
|
|
||||||
<Node Name="DatabaseTriggers" LocLabel="SR.SchemaHierarchy_DatabaseTriggers" BaseClass="ModelBased" NodeType="DatabaseTrigger" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlDatabaseDdlTrigger" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
<Node Name="DatabaseTriggers" LocLabel="SR.SchemaHierarchy_DatabaseTriggers" BaseClass="ModelBased" NodeType="DatabaseTrigger" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlDatabaseDdlTrigger" ValidFor="Sql2005|Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
||||||
<Node Name="Assemblies" LocLabel="SR.SchemaHierarchy_Assemblies" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="Assembly" ChildQuerierTypes="SqlAssembly" ValidFor="AllOnPrem|AzureV12"/>
|
<Node Name="Assemblies" LocLabel="SR.SchemaHierarchy_Assemblies" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="Assembly" ChildQuerierTypes="SqlAssembly" ValidFor="AllOnPrem|AzureV12"/>
|
||||||
<Node Name="Types" LocLabel="SR.SchemaHierarchy_Types" BaseClass="ModelBased" >
|
<Node Name="Types" LocLabel="SR.SchemaHierarchy_Types" BaseClass="ModelBased" ValidFor="NotSqlDemand">
|
||||||
<Child Name="SystemDataTypes" IsSystemObject="1"/>
|
<Child Name="SystemDataTypes" IsSystemObject="1"/>
|
||||||
<Child Name="UserDefinedDataTypes"/>
|
<Child Name="UserDefinedDataTypes"/>
|
||||||
<Child Name="UserDefinedTableTypes"/>
|
<Child Name="UserDefinedTableTypes"/>
|
||||||
@@ -301,8 +302,8 @@
|
|||||||
<Node Name="SystemSpatialDataTypes" LocLabel="SR.SchemaHierarchy_SystemSpatialDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemSpatialDataType" ChildQuerierTypes="SqlBuiltInType" ValidFor="Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
<Node Name="SystemSpatialDataTypes" LocLabel="SR.SchemaHierarchy_SystemSpatialDataTypes" BaseClass="ModelBased" Strategy="MultipleElementsOfType" NodeType="SystemSpatialDataType" ChildQuerierTypes="SqlBuiltInType" ValidFor="Sql2008|Sql2012|Sql2014|Sql2016|Sql2017|AzureV12"/>
|
||||||
|
|
||||||
<!-- Childs of ExternalResources -->
|
<!-- Childs of ExternalResources -->
|
||||||
<Node Name="ExternalDataSources" LocLabel="SR.SchemaHierarchy_ExternalDataSources" BaseClass="ModelBased" NodeType="ExternalDataSource" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalDataSource" ValidFor="Sql2016|Sql2017|AzureV12"/>
|
<Node Name="ExternalDataSources" LocLabel="SR.SchemaHierarchy_ExternalDataSources" BaseClass="ModelBased" NodeType="ExternalDataSource" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalDataSource" ValidFor="Sql2016|Sql2017|AzureV12|SqlOnDemand"/>
|
||||||
<Node Name="ExternalFileFormats" LocLabel="SR.SchemaHierarchy_ExternalFileFormats" BaseClass="ModelBased" NodeType="ExternalFileFormat" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalFileFormat" ValidFor="Sql2016|Sql2017"/>
|
<Node Name="ExternalFileFormats" LocLabel="SR.SchemaHierarchy_ExternalFileFormats" BaseClass="ModelBased" NodeType="ExternalFileFormat" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlExternalFileFormat" ValidFor="Sql2016|Sql2017|SqlOnDemand"/>
|
||||||
|
|
||||||
<Node Name="StoredProcedures" LocLabel="SR.SchemaHierarchy_StoredProcedures" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlProcedure" TreeNode="StoredProcedureTreeNode">
|
<Node Name="StoredProcedures" LocLabel="SR.SchemaHierarchy_StoredProcedures" BaseClass="ModelBased" Strategy="MultipleElementsOfType" ChildQuerierTypes="SqlProcedure" TreeNode="StoredProcedureTreeNode">
|
||||||
<Filters >
|
<Filters >
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.ServerLevelServerRoles,
|
NodeTypeId = NodeTypes.ServerLevelServerRoles,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
ValidFor = ValidForFlag.AllOnPrem,
|
ValidFor = ValidForFlag.AllOnPrem|ValidForFlag.SqlOnDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -702,7 +702,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.ExternalResources,
|
NodeTypeId = NodeTypes.ExternalResources,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12,
|
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12|ValidForFlag.SqlOnDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -818,6 +818,14 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
IsMsShippedOwned = true,
|
IsMsShippedOwned = true,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
|
currentChildren.Add(new FolderNode {
|
||||||
|
NodeValue = SR.SchemaHierarchy_ExternalTables,
|
||||||
|
NodeType = "Folder",
|
||||||
|
NodeTypeId = NodeTypes.ExternalTables,
|
||||||
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.SqlOnDemand,
|
||||||
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override Type[] ChildQuerierTypes
|
internal override Type[] ChildQuerierTypes
|
||||||
@@ -929,6 +937,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Functions,
|
NodeTypeId = NodeTypes.Functions,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -952,6 +961,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Types,
|
NodeTypeId = NodeTypes.Types,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -986,7 +996,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.ExternalDataSources,
|
NodeTypeId = NodeTypes.ExternalDataSources,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12,
|
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.AzureV12|ValidForFlag.SqlOnDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -994,7 +1004,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.ExternalFileFormats,
|
NodeTypeId = NodeTypes.ExternalFileFormats,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017,
|
ValidFor = ValidForFlag.Sql2016|ValidForFlag.Sql2017|ValidForFlag.SqlOnDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1289,6 +1299,43 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Export(typeof(ChildFactory))]
|
||||||
|
[Shared]
|
||||||
|
internal partial class ExternalTablesChildFactory : SmoChildFactoryBase
|
||||||
|
{
|
||||||
|
public override IEnumerable<string> ApplicableParents() { return new[] { "ExternalTables" }; }
|
||||||
|
|
||||||
|
public override IEnumerable<NodeFilter> Filters
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var filters = new List<NodeFilter>();
|
||||||
|
filters.Add(new NodeFilter
|
||||||
|
{
|
||||||
|
Property = "IsExternal",
|
||||||
|
Type = typeof(bool),
|
||||||
|
Values = new List<object> { 1 },
|
||||||
|
});
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal override Type[] ChildQuerierTypes
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return new [] { typeof(SqlTableQuerier), };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override TreeNode CreateChild(TreeNode parent, object context)
|
||||||
|
{
|
||||||
|
var child = new ExternalTableTreeNode();
|
||||||
|
InitializeChild(parent, child, context);
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Export(typeof(ChildFactory))]
|
[Export(typeof(ChildFactory))]
|
||||||
[Shared]
|
[Shared]
|
||||||
internal partial class TableChildFactory : SmoChildFactoryBase
|
internal partial class TableChildFactory : SmoChildFactoryBase
|
||||||
@@ -1352,6 +1399,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Indexes,
|
NodeTypeId = NodeTypes.Indexes,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -1359,6 +1407,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Statistics,
|
NodeTypeId = NodeTypes.Statistics,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1406,6 +1455,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Indexes,
|
NodeTypeId = NodeTypes.Indexes,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -1413,6 +1463,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Statistics,
|
NodeTypeId = NodeTypes.Statistics,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1454,6 +1505,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Statistics,
|
NodeTypeId = NodeTypes.Statistics,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1729,6 +1781,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Indexes,
|
NodeTypeId = NodeTypes.Indexes,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
currentChildren.Add(new FolderNode {
|
currentChildren.Add(new FolderNode {
|
||||||
@@ -1736,6 +1789,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
NodeType = "Folder",
|
NodeType = "Folder",
|
||||||
NodeTypeId = NodeTypes.Statistics,
|
NodeTypeId = NodeTypes.Statistics,
|
||||||
IsSystemObject = false,
|
IsSystemObject = false,
|
||||||
|
ValidFor = ValidForFlag.NotSqlDemand,
|
||||||
SortPriority = SmoTreeNode.NextSortPriority,
|
SortPriority = SmoTreeNode.NextSortPriority,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
<#
|
<#
|
||||||
var directory = Path.GetDirectoryName(Host.TemplateFile);
|
var directory = Path.GetDirectoryName(Host.TemplateFile);
|
||||||
string xmlFile = Path.Combine(directory, "TreeNodeDefinition.xml");
|
string xmlFile = Path.Combine(directory, "TreeNodeDefinition.xml");
|
||||||
|
|
||||||
/////////
|
/////////
|
||||||
// TODO - is Generate all the ReverseDependencies needed?
|
// TODO - is Generate all the ReverseDependencies needed?
|
||||||
/////////
|
/////////
|
||||||
@@ -103,7 +103,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
WriteLine(string.Format(" internal partial class {0}ChildFactory : {1}", type, childFactoryBaseClass));
|
WriteLine(string.Format(" internal partial class {0}ChildFactory : {1}", type, childFactoryBaseClass));
|
||||||
|
|
||||||
WriteLine(" {");
|
WriteLine(" {");
|
||||||
WriteLine(string.Format(" public override IEnumerable<string> ApplicableParents() {{ return new[] {{ \"{0}\" }}; }}", type));
|
WriteLine(string.Format(" public override IEnumerable<string> ApplicableParents() {{ return new[] {{ \"{0}\" }}; }}", type));
|
||||||
|
|
||||||
List<XmlElement> children = GetChildren(xmlFile, type);
|
List<XmlElement> children = GetChildren(xmlFile, type);
|
||||||
List<XmlElement> filters = GetNodeFilters(xmlFile, type);
|
List<XmlElement> filters = GetNodeFilters(xmlFile, type);
|
||||||
@@ -239,7 +239,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WriteLine(" currentChildren.Add(new FolderNode {");
|
WriteLine(" currentChildren.Add(new FolderNode {");
|
||||||
WriteLine(string.Format(" NodeValue = {0},", childAsXmlElement.GetAttribute("LocLabel")));
|
WriteLine(string.Format(" NodeValue = {0},", childAsXmlElement.GetAttribute("LocLabel")));
|
||||||
WriteLine(string.Format(" NodeType = \"{0}\",", "Folder"));
|
WriteLine(string.Format(" NodeType = \"{0}\",", "Folder"));
|
||||||
WriteLine(string.Format(" NodeTypeId = NodeTypes.{0},", child.GetAttribute("Name")));
|
WriteLine(string.Format(" NodeTypeId = NodeTypes.{0},", child.GetAttribute("Name")));
|
||||||
@@ -254,7 +254,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
WriteLine(string.Format(" ValidFor = {0},", GetValidForFlags(validFor)));
|
WriteLine(string.Format(" ValidFor = {0},", GetValidForFlags(validFor)));
|
||||||
}
|
}
|
||||||
WriteLine(" SortPriority = SmoTreeNode.NextSortPriority,");
|
WriteLine(" SortPriority = SmoTreeNode.NextSortPriority,");
|
||||||
WriteLine(" });");
|
WriteLine(" });");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WriteLine(" }");
|
WriteLine(" }");
|
||||||
@@ -341,60 +341,68 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
<#+
|
<#+
|
||||||
public static string GetValidForFlags(string validForStr)
|
public static string GetValidForFlags(string validForStr)
|
||||||
{
|
{
|
||||||
List<string> flags = new List<string>();
|
List<string> flags = new List<string>();
|
||||||
if (validForStr.Contains("Sql2005"))
|
if (validForStr.Contains("Sql2005"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2005");
|
flags.Add("ValidForFlag.Sql2005");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2008"))
|
if (validForStr.Contains("Sql2008"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2008");
|
flags.Add("ValidForFlag.Sql2008");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2012"))
|
if (validForStr.Contains("Sql2012"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2012");
|
flags.Add("ValidForFlag.Sql2012");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2014"))
|
if (validForStr.Contains("Sql2014"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2014");
|
flags.Add("ValidForFlag.Sql2014");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2016"))
|
if (validForStr.Contains("Sql2016"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2016");
|
flags.Add("ValidForFlag.Sql2016");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("Sql2017"))
|
if (validForStr.Contains("Sql2017"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.Sql2017");
|
flags.Add("ValidForFlag.Sql2017");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("AzureV12"))
|
if (validForStr.Contains("AzureV12"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.AzureV12");
|
flags.Add("ValidForFlag.AzureV12");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (validForStr.Contains("AllOnPrem"))
|
if (validForStr.Contains("AllOnPrem"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.AllOnPrem");
|
flags.Add("ValidForFlag.AllOnPrem");
|
||||||
}
|
}
|
||||||
if (validForStr.Contains("AllAzure"))
|
if (validForStr.Contains("AllAzure"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.AllAzure");
|
flags.Add("ValidForFlag.AllAzure");
|
||||||
}
|
}
|
||||||
if (validForStr.Contains("NotSqlDw"))
|
if (validForStr.Contains("NotSqlDw"))
|
||||||
{
|
{
|
||||||
flags.Add("ValidForFlag.NotSqlDw");
|
flags.Add("ValidForFlag.NotSqlDw");
|
||||||
}
|
}
|
||||||
if (validForStr == "All")
|
if (validForStr.Contains("SqlOnDemand"))
|
||||||
{
|
{
|
||||||
|
flags.Add("ValidForFlag.SqlOnDemand");
|
||||||
|
}
|
||||||
|
if (validForStr == "NotSqlDemand")
|
||||||
|
{
|
||||||
|
flags.Add("ValidForFlag.NotSqlDemand");
|
||||||
|
}
|
||||||
|
if (validForStr == "All")
|
||||||
|
{
|
||||||
flags.Add("ValidForFlag.All");
|
flags.Add("ValidForFlag.All");
|
||||||
}
|
}
|
||||||
|
|
||||||
return string.Join("|", flags);
|
return string.Join("|", flags);
|
||||||
}
|
}
|
||||||
@@ -417,7 +425,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
}
|
}
|
||||||
return typesList.ToArray();
|
return typesList.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Dictionary<string, List<string>> GetReverseDependencies(string xmlFile)
|
public static Dictionary<string, List<string>> GetReverseDependencies(string xmlFile)
|
||||||
{
|
{
|
||||||
Dictionary<string, List<string>> dependencyMap = new Dictionary<string, List<string>>();
|
Dictionary<string, List<string>> dependencyMap = new Dictionary<string, List<string>>();
|
||||||
@@ -440,7 +448,7 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string[] allDepedencies = dependency.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
string[] allDepedencies = dependency.Split(new [] { ';' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
dependenciesForType = new List<string>();
|
dependenciesForType = new List<string>();
|
||||||
dependenciesForType.AddRange(allDepedencies);
|
dependenciesForType.AddRange(allDepedencies);
|
||||||
dependencyMap.Add(typeName, dependenciesForType);
|
dependencyMap.Add(typeName, dependenciesForType);
|
||||||
@@ -476,11 +484,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
XmlNodeList nodeList = doc.SelectNodes("/ServerExplorerTree/CodeGenOptions/UniqueTreeNode");
|
XmlNodeList nodeList = doc.SelectNodes("/ServerExplorerTree/CodeGenOptions/UniqueTreeNode");
|
||||||
foreach (var item in nodeList)
|
foreach (var item in nodeList)
|
||||||
{
|
{
|
||||||
XmlElement itemAsElement = item as XmlElement;
|
XmlElement itemAsElement = item as XmlElement;
|
||||||
if (itemAsElement != null)
|
if (itemAsElement != null)
|
||||||
{
|
{
|
||||||
retElements.Add(itemAsElement);
|
retElements.Add(itemAsElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retElements;
|
return retElements;
|
||||||
}
|
}
|
||||||
@@ -495,11 +503,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Child", parentName));
|
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Child", parentName));
|
||||||
foreach (var item in nodeList)
|
foreach (var item in nodeList)
|
||||||
{
|
{
|
||||||
XmlElement itemAsElement = item as XmlElement;
|
XmlElement itemAsElement = item as XmlElement;
|
||||||
if (itemAsElement != null)
|
if (itemAsElement != null)
|
||||||
{
|
{
|
||||||
retElements.Add(itemAsElement);
|
retElements.Add(itemAsElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retElements;
|
return retElements;
|
||||||
}
|
}
|
||||||
@@ -514,11 +522,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Filters/Filter", parentName));
|
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Filters/Filter", parentName));
|
||||||
foreach (var item in nodeList)
|
foreach (var item in nodeList)
|
||||||
{
|
{
|
||||||
XmlElement itemAsElement = item as XmlElement;
|
XmlElement itemAsElement = item as XmlElement;
|
||||||
if (itemAsElement != null)
|
if (itemAsElement != null)
|
||||||
{
|
{
|
||||||
retElements.Add(itemAsElement);
|
retElements.Add(itemAsElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retElements;
|
return retElements;
|
||||||
}
|
}
|
||||||
@@ -534,11 +542,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Properties/Property", parentName));
|
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Properties/Property", parentName));
|
||||||
foreach (var item in nodeList)
|
foreach (var item in nodeList)
|
||||||
{
|
{
|
||||||
XmlElement itemAsElement = item as XmlElement;
|
XmlElement itemAsElement = item as XmlElement;
|
||||||
if (itemAsElement != null)
|
if (itemAsElement != null)
|
||||||
{
|
{
|
||||||
retElements.Add(itemAsElement);
|
retElements.Add(itemAsElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retElements;
|
return retElements;
|
||||||
}
|
}
|
||||||
@@ -553,11 +561,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel
|
|||||||
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Filters/Filter[@Property='{1}']/Value", parentName, filterProperty));
|
XmlNodeList nodeList = doc.SelectNodes(string.Format("/ServerExplorerTree/Node[@Name='{0}']/Filters/Filter[@Property='{1}']/Value", parentName, filterProperty));
|
||||||
foreach (var item in nodeList)
|
foreach (var item in nodeList)
|
||||||
{
|
{
|
||||||
XmlElement itemAsElement = item as XmlElement;
|
XmlElement itemAsElement = item as XmlElement;
|
||||||
if (itemAsElement != null)
|
if (itemAsElement != null)
|
||||||
{
|
{
|
||||||
retElements.Add(itemAsElement);
|
retElements.Add(itemAsElement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retElements;
|
return retElements;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
|||||||
Sql2014,
|
Sql2014,
|
||||||
Sql2016,
|
Sql2016,
|
||||||
Sql2017,
|
Sql2017,
|
||||||
AzureV12
|
AzureV12,
|
||||||
|
SqlOnDemand
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -62,6 +63,10 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
|||||||
{
|
{
|
||||||
validforFlag = ValidForFlag.SqlDw;
|
validforFlag = ValidForFlag.SqlDw;
|
||||||
}
|
}
|
||||||
|
else if (serverType == SqlServerType.SqlOnDemand)
|
||||||
|
{
|
||||||
|
validforFlag = ValidForFlag.SqlOnDemand;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//TODO: not supporting SQL DW for on prem
|
//TODO: not supporting SQL DW for on prem
|
||||||
@@ -79,7 +84,11 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
|||||||
SqlServerType serverType = SqlServerType.Unknown;
|
SqlServerType serverType = SqlServerType.Unknown;
|
||||||
string serverVersion = serverInfo.ServerVersion;
|
string serverVersion = serverInfo.ServerVersion;
|
||||||
|
|
||||||
if (serverInfo.IsCloud)
|
if (serverInfo.EngineEditionId == 11)
|
||||||
|
{
|
||||||
|
serverType = SqlServerType.SqlOnDemand;
|
||||||
|
}
|
||||||
|
else if (serverInfo.IsCloud)
|
||||||
{
|
{
|
||||||
serverType = SqlServerType.AzureV12;
|
serverType = SqlServerType.AzureV12;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,12 @@ namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer
|
|||||||
Sql2016 = 0x20,
|
Sql2016 = 0x20,
|
||||||
Sql2017 = 0x40,
|
Sql2017 = 0x40,
|
||||||
SqlDw = 0x80,
|
SqlDw = 0x80,
|
||||||
|
SqlOnDemand = 0x100,
|
||||||
AllOnPrem = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017,
|
AllOnPrem = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017,
|
||||||
AllAzure = AzureV12,
|
AllAzure = AzureV12,
|
||||||
All = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlDw,
|
All = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlDw | SqlOnDemand,
|
||||||
NotSqlDw = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12
|
NotSqlDw = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlOnDemand,
|
||||||
|
NotSqlDemand = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12 | SqlDw,
|
||||||
|
NotSqlDwNotDemand = Sql2005 | Sql2008 | Sql2012 | Sql2014 | Sql2016 | Sql2017 | AzureV12,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting.Contracts
|
|||||||
/// SqlAzureDatabaseEdition
|
/// SqlAzureDatabaseEdition
|
||||||
/// SqlDatawarehouseEdition
|
/// SqlDatawarehouseEdition
|
||||||
/// SqlServerStretchEdition
|
/// SqlServerStretchEdition
|
||||||
/// SqlManagedInstanceEdition
|
/// SqlManagedInstanceEdition
|
||||||
|
/// SqlServerOnDemandEdition
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string TargetDatabaseEngineEdition { get; set; } = "SqlServerEnterpriseEdition";
|
public virtual string TargetDatabaseEngineEdition { get; set; } = "SqlServerEnterpriseEdition";
|
||||||
|
|
||||||
|
|||||||
@@ -630,6 +630,9 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
|
|||||||
case SqlScriptOptions.ScriptDatabaseEngineEdition.SqlServerManagedInstanceEdition:
|
case SqlScriptOptions.ScriptDatabaseEngineEdition.SqlServerManagedInstanceEdition:
|
||||||
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.SqlManagedInstance;
|
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.SqlManagedInstance;
|
||||||
break;
|
break;
|
||||||
|
case SqlScriptOptions.ScriptDatabaseEngineEdition.SqlServerOnDemandEdition:
|
||||||
|
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.SqlOnDemand;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.Standard;
|
scriptingOptions.TargetDatabaseEngineEdition = DatabaseEngineEdition.Standard;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Scripting
|
|||||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlDataWarehouse, "SqlDatawarehouseEdition");
|
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlDataWarehouse, "SqlDatawarehouseEdition");
|
||||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlStretchDatabase, "SqlServerStretchEdition");
|
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlStretchDatabase, "SqlServerStretchEdition");
|
||||||
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlManagedInstance, "SqlServerManagedInstance");
|
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlManagedInstance, "SqlServerManagedInstance");
|
||||||
|
targetDatabaseEngineEditionMap.Add(DatabaseEngineEdition.SqlOnDemand, "SqlOnDemand");
|
||||||
|
|
||||||
// Mapping for database engine type
|
// Mapping for database engine type
|
||||||
serverVersionMap.Add(9, "Script90Compat");
|
serverVersionMap.Add(9, "Script90Compat");
|
||||||
|
|||||||
@@ -98,6 +98,8 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
|||||||
"testServer/Databases/System Databases/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
"testServer/Databases/System Databases/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
"testServer/Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/Databases/System Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
"testServer/Databases/System Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
||||||
|
"testServer/Databases/testDatabase/Tables/External Tables/testSchema.testTable/Columns/testColumn",
|
||||||
|
"testServer/Databases/System Databases/testDatabase/Tables/External Tables/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
"testServer/Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/Databases/System Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
"testServer/Databases/System Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn",
|
"testServer/Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn",
|
||||||
@@ -119,6 +121,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
|||||||
{
|
{
|
||||||
"testServer/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
"testServer/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
"testServer/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
||||||
|
"testServer/testDatabase/Tables/External Tables/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
"testServer/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
||||||
"testServer/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn"
|
"testServer/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn"
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
|||||||
VerifyGetValidForFlag(SqlServerType.Sql2014, ValidForFlag.Sql2014);
|
VerifyGetValidForFlag(SqlServerType.Sql2014, ValidForFlag.Sql2014);
|
||||||
VerifyGetValidForFlag(SqlServerType.Sql2016, ValidForFlag.Sql2016);
|
VerifyGetValidForFlag(SqlServerType.Sql2016, ValidForFlag.Sql2016);
|
||||||
VerifyGetValidForFlag(SqlServerType.Sql2017, ValidForFlag.Sql2017);
|
VerifyGetValidForFlag(SqlServerType.Sql2017, ValidForFlag.Sql2017);
|
||||||
|
VerifyGetValidForFlag(SqlServerType.SqlOnDemand, ValidForFlag.SqlOnDemand);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
@@ -135,6 +136,14 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
|||||||
VerifyIsValidFor(serverValidFor, validFor, expected);
|
VerifyIsValidFor(serverValidFor, validFor, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void CalculateServerTypeShouldReturnSqlOnDemandGivenEngineEdition()
|
||||||
|
{
|
||||||
|
int engineEdition = 11;
|
||||||
|
SqlServerType expected = SqlServerType.SqlOnDemand;
|
||||||
|
VerifyCalculateServerTypeForEngineEdition(engineEdition, expected);
|
||||||
|
}
|
||||||
|
|
||||||
private void VerifyIsValidFor(ValidForFlag serverValidFor, ValidForFlag validFor, bool expected)
|
private void VerifyIsValidFor(ValidForFlag serverValidFor, ValidForFlag validFor, bool expected)
|
||||||
{
|
{
|
||||||
bool actual = ServerVersionHelper.IsValidFor(serverValidFor, validFor);
|
bool actual = ServerVersionHelper.IsValidFor(serverValidFor, validFor);
|
||||||
@@ -151,6 +160,17 @@ namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
|||||||
Assert.Equal(expected, actual);
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void VerifyCalculateServerTypeForEngineEdition(int engineEdition, SqlServerType expected)
|
||||||
|
{
|
||||||
|
ServerInfo serverInfo = new ServerInfo
|
||||||
|
{
|
||||||
|
EngineEditionId = engineEdition
|
||||||
|
};
|
||||||
|
|
||||||
|
SqlServerType actual = ServerVersionHelper.CalculateServerType(serverInfo);
|
||||||
|
Assert.True(actual == expected, $"Verify server type based on Engine Edition. Actual value: {actual}, Expected value: {expected}");
|
||||||
|
}
|
||||||
|
|
||||||
private void VerifyGetValidForFlag(SqlServerType serverType, ValidForFlag validForFlag)
|
private void VerifyGetValidForFlag(SqlServerType serverType, ValidForFlag validForFlag)
|
||||||
{
|
{
|
||||||
ValidForFlag validforFlag = ServerVersionHelper.GetValidForFlag(serverType);
|
ValidForFlag validforFlag = ServerVersionHelper.GetValidForFlag(serverType);
|
||||||
|
|||||||
Reference in New Issue
Block a user