mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 18:47:57 -05:00
[SQL-Migration] Port changes to new migration service (#1835)
This PR ports some changes that were missed to the new, separated Migration Service project. Here is the PR to separate Migration Service into project: #1828 Changes from the following PRs were not ported over: [SQL Migration] Mark SQL MI premium-series memory optimized SKUs as GA #1811 Update login migrations nuget with perf improvements #1789
This commit is contained in:
@@ -546,21 +546,6 @@ namespace Microsoft.SqlTools.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;
|
||||||
|
|
||||||
@@ -582,21 +567,6 @@ namespace Microsoft.SqlTools.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;
|
||||||
|
|
||||||
@@ -632,11 +602,6 @@ namespace Microsoft.SqlTools.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);
|
||||||
@@ -662,30 +627,10 @@ namespace Microsoft.SqlTools.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;
|
||||||
|
|
||||||
@@ -701,19 +646,8 @@ namespace Microsoft.SqlTools.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;
|
||||||
}
|
}
|
||||||
@@ -935,8 +869,6 @@ namespace Microsoft.SqlTools.Migration
|
|||||||
ComputeTier.Provisioned,
|
ComputeTier.Provisioned,
|
||||||
AzureSqlPaaSHardwareType.PremiumSeries));
|
AzureSqlPaaSHardwareType.PremiumSeries));
|
||||||
|
|
||||||
if (includePreviewSkus)
|
|
||||||
{
|
|
||||||
// Premium Memory Optimized BC/GP
|
// Premium Memory Optimized BC/GP
|
||||||
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
|
eligibleSkuCategories.Add(new AzureSqlSkuPaaSCategory(
|
||||||
AzureSqlTargetPlatform.AzureSqlManagedInstance,
|
AzureSqlTargetPlatform.AzureSqlManagedInstance,
|
||||||
@@ -951,7 +883,6 @@ namespace Microsoft.SqlTools.Migration
|
|||||||
AzureSqlPaaSServiceTier.GeneralPurpose,
|
AzureSqlPaaSServiceTier.GeneralPurpose,
|
||||||
ComputeTier.Provisioned,
|
ComputeTier.Provisioned,
|
||||||
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
|
AzureSqlPaaSHardwareType.PremiumSeriesMemoryOptimized));
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "AzureSqlVirtualMachine":
|
case "AzureSqlVirtualMachine":
|
||||||
@@ -971,7 +902,6 @@ namespace Microsoft.SqlTools.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]))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,6 +13,11 @@ namespace Microsoft.SqlTools.Migration.Utils
|
|||||||
{
|
{
|
||||||
public static void AddExceptions(this IDictionary<string, IEnumerable<ReportableException>> exceptionMap1, IDictionary<string, IEnumerable<ReportableException>> exceptionMap2)
|
public static void AddExceptions(this IDictionary<string, IEnumerable<ReportableException>> exceptionMap1, IDictionary<string, IEnumerable<ReportableException>> exceptionMap2)
|
||||||
{
|
{
|
||||||
|
if (exceptionMap1 is null || exceptionMap2 is null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var keyValuePair2 in exceptionMap2)
|
foreach (var keyValuePair2 in exceptionMap2)
|
||||||
{
|
{
|
||||||
// If the dictionary already contains the key then merge them
|
// If the dictionary already contains the key then merge them
|
||||||
|
|||||||
Reference in New Issue
Block a user