mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 10:58:30 -05:00
[SQL Migration] Mark SQL MI premium-series memory optimized SKUs as GA (#1811)
* GA SQL MI premium-series memory optimized SKUs * Fix null reference exception
This commit is contained in:
@@ -606,21 +606,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
|
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
|
||||||
resultSet.sqlMiResults = provider.GetSkuRecommendation(prefs, req);
|
resultSet.sqlMiResults = provider.GetSkuRecommendation(prefs, req);
|
||||||
|
|
||||||
// if no result was generated, create a result with a null SKU
|
|
||||||
if (!resultSet.sqlMiResults.Any())
|
|
||||||
{
|
|
||||||
resultSet.sqlMiResults.Add(new SkuRecommendationResult()
|
|
||||||
{
|
|
||||||
SqlInstanceName = parameters.TargetSqlInstance,
|
|
||||||
DatabaseName = null,
|
|
||||||
TargetSku = null,
|
|
||||||
MonthlyCost = null,
|
|
||||||
Ranking = -1,
|
|
||||||
PositiveJustifications = null,
|
|
||||||
NegativeJustifications = null,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
sqlMiStopwatch.Stop();
|
sqlMiStopwatch.Stop();
|
||||||
resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds;
|
resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds;
|
||||||
|
|
||||||
@@ -642,21 +627,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus);
|
prefs.EligibleSkuCategories = GetEligibleSkuCategories("AzureSqlVirtualMachine", parameters.IncludePreviewSkus);
|
||||||
resultSet.sqlVmResults = provider.GetSkuRecommendation(prefs, req);
|
resultSet.sqlVmResults = provider.GetSkuRecommendation(prefs, req);
|
||||||
|
|
||||||
// if no result was generated, create a result with a null SKU
|
|
||||||
if (!resultSet.sqlVmResults.Any())
|
|
||||||
{
|
|
||||||
resultSet.sqlVmResults.Add(new SkuRecommendationResult()
|
|
||||||
{
|
|
||||||
SqlInstanceName = parameters.TargetSqlInstance,
|
|
||||||
DatabaseName = null,
|
|
||||||
TargetSku = null,
|
|
||||||
MonthlyCost = null,
|
|
||||||
Ranking = -1,
|
|
||||||
PositiveJustifications = null,
|
|
||||||
NegativeJustifications = null,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
sqlVmStopwatch.Stop();
|
sqlVmStopwatch.Stop();
|
||||||
resultSet.sqlVmDurationInMs = sqlVmStopwatch.ElapsedMilliseconds;
|
resultSet.sqlVmDurationInMs = sqlVmStopwatch.ElapsedMilliseconds;
|
||||||
|
|
||||||
@@ -692,11 +662,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus);
|
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlDatabase", parameters.IncludePreviewSkus);
|
||||||
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
|
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
|
||||||
DataTable SqlMISpec = pi.SqlMISpec.Copy();
|
DataTable SqlMISpec = pi.SqlMISpec.Copy();
|
||||||
if (!parameters.IncludePreviewSkus)
|
|
||||||
{
|
|
||||||
SqlMISpec = pi.SqlMISpec.AsEnumerable().Where(
|
|
||||||
p => !p.Field<string>("SLO").Contains("Premium")).CopyToDataTable();
|
|
||||||
}
|
|
||||||
MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
||||||
DbSkuRecParams DbSkuRecParams = new DbSkuRecParams(pi.SqlDbSpec, elasticaggregator.DatabaseTs, pi.DbLookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
DbSkuRecParams DbSkuRecParams = new DbSkuRecParams(pi.SqlDbSpec, elasticaggregator.DatabaseTs, pi.DbLookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
||||||
resultSet.sqlDbResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req);
|
resultSet.sqlDbResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req);
|
||||||
@@ -722,30 +687,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
|
List<AzureSqlSkuCategory> eligibleSkuCategories = GetEligibleSkuCategories("AzureSqlManagedInstance", parameters.IncludePreviewSkus);
|
||||||
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
|
ElasticStrategySKURecommendationPipeline pi = new ElasticStrategySKURecommendationPipeline(eligibleSkuCategories);
|
||||||
DataTable SqlMISpec = pi.SqlMISpec.Copy();
|
DataTable SqlMISpec = pi.SqlMISpec.Copy();
|
||||||
if (!parameters.IncludePreviewSkus)
|
|
||||||
{
|
|
||||||
SqlMISpec = pi.SqlMISpec.AsEnumerable().Where(
|
|
||||||
p => !p.Field<string>("SLO").Contains("Premium")).CopyToDataTable();
|
|
||||||
}
|
|
||||||
MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
MISkuRecParams MiSkuRecParams = new MISkuRecParams(pi.SqlGPMIFileSpec, SqlMISpec, elasticaggregator.FileLevelTs, elasticaggregator.InstanceTs, pi.MILookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
||||||
DbSkuRecParams DbSkuRecParams = new DbSkuRecParams(pi.SqlDbSpec, elasticaggregator.DatabaseTs, pi.DbLookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
DbSkuRecParams DbSkuRecParams = new DbSkuRecParams(pi.SqlDbSpec, elasticaggregator.DatabaseTs, pi.DbLookupTable, Convert.ToDouble(parameters.ScalingFactor) / 100.0, parameters.TargetSqlInstance);
|
||||||
resultSet.sqlMiResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req);
|
resultSet.sqlMiResults = pi.ElasticStrategyGetSkuRecommendation(MiSkuRecParams, DbSkuRecParams, req);
|
||||||
|
|
||||||
// if no result was generated, create a result with a null SKU
|
|
||||||
if (!resultSet.sqlMiResults.Any())
|
|
||||||
{
|
|
||||||
resultSet.sqlMiResults.Add(new SkuRecommendationResult()
|
|
||||||
{
|
|
||||||
SqlInstanceName = parameters.TargetSqlInstance,
|
|
||||||
DatabaseName = null,
|
|
||||||
TargetSku = null,
|
|
||||||
MonthlyCost = null,
|
|
||||||
Ranking = -1,
|
|
||||||
PositiveJustifications = null,
|
|
||||||
NegativeJustifications = null,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
sqlMiStopwatch.Stop();
|
sqlMiStopwatch.Stop();
|
||||||
resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds;
|
resultSet.sqlMiDurationInMs = sqlMiStopwatch.ElapsedMilliseconds;
|
||||||
|
|
||||||
@@ -761,19 +706,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
// generate SQL VM recommendations, if applicable
|
// generate SQL VM recommendations, if applicable
|
||||||
if (parameters.TargetPlatforms.Contains("AzureSqlVirtualMachine"))
|
if (parameters.TargetPlatforms.Contains("AzureSqlVirtualMachine"))
|
||||||
{
|
{
|
||||||
// elastic model currently doesn't support VM recommendation, return null SKU for now
|
// elastic model currently doesn't support VM recommendation, return empty list
|
||||||
resultSet.sqlVmResults = new List<SkuRecommendationResult> {
|
resultSet.sqlVmResults = new List<SkuRecommendationResult> { };
|
||||||
new SkuRecommendationResult()
|
|
||||||
{
|
|
||||||
SqlInstanceName = parameters.TargetSqlInstance,
|
|
||||||
DatabaseName = null,
|
|
||||||
TargetSku = null,
|
|
||||||
MonthlyCost = null,
|
|
||||||
Ranking = -1,
|
|
||||||
PositiveJustifications = null,
|
|
||||||
NegativeJustifications = null,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
resultSet.sqlVmDurationInMs = -1;
|
resultSet.sqlVmDurationInMs = -1;
|
||||||
resultSet.sqlVmReportPath = String.Empty;
|
resultSet.sqlVmReportPath = String.Empty;
|
||||||
}
|
}
|
||||||
@@ -994,24 +928,20 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
AzureSqlPaaSServiceTier.GeneralPurpose,
|
AzureSqlPaaSServiceTier.GeneralPurpose,
|
||||||
ComputeTier.Provisioned,
|
ComputeTier.Provisioned,
|
||||||
AzureSqlPaaSHardwareType.PremiumSeries));
|
AzureSqlPaaSHardwareType.PremiumSeries));
|
||||||
|
// Premium Memory Optimized BC/GP
|
||||||
|
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
|
||||||
|
AzureSqlTargetPlatform.AzureSqlManagedInstance,
|
||||||
|
AzureSqlPurchasingModel.vCore,
|
||||||
|
AzureSqlPaaSServiceTier.BusinessCritical,
|
||||||
|
ComputeTier.Provisioned,
|
||||||
|
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
|
||||||
|
|
||||||
if (includePreviewSkus)
|
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
|
||||||
{
|
AzureSqlTargetPlatform.AzureSqlManagedInstance,
|
||||||
// Premium Memory Optimized BC/GP
|
AzureSqlPurchasingModel.vCore,
|
||||||
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
|
AzureSqlPaaSServiceTier.GeneralPurpose,
|
||||||
AzureSqlTargetPlatform.AzureSqlManagedInstance,
|
ComputeTier.Provisioned,
|
||||||
AzureSqlPurchasingModel.vCore,
|
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
|
||||||
AzureSqlPaaSServiceTier.BusinessCritical,
|
|
||||||
ComputeTier.Provisioned,
|
|
||||||
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
|
|
||||||
|
|
||||||
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
|
|
||||||
AzureSqlTargetPlatform.AzureSqlManagedInstance,
|
|
||||||
AzureSqlPurchasingModel.vCore,
|
|
||||||
AzureSqlPaaSServiceTier.GeneralPurpose,
|
|
||||||
ComputeTier.Provisioned,
|
|
||||||
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "AzureSqlVirtualMachine":
|
case "AzureSqlVirtualMachine":
|
||||||
@@ -1031,7 +961,6 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration
|
|||||||
vmCapabilities.AddRange(vmPreviewCapabilities);
|
vmCapabilities.AddRange(vmPreviewCapabilities);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
foreach (VirtualMachineFamily family in AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.GeneralPurpose]
|
foreach (VirtualMachineFamily family in AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.GeneralPurpose]
|
||||||
.Concat(AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.MemoryOptimized]))
|
.Concat(AzureVirtualMachineFamilyGroup.FamilyGroups[VirtualMachineFamilyType.MemoryOptimized]))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user