diff --git a/src/Microsoft.SqlTools.ServiceLayer/Migration/Contracts/MigrationAssessmentsRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/Migration/Contracts/MigrationAssessmentsRequest.cs index 6b9befd7..fb1e5b17 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Migration/Contracts/MigrationAssessmentsRequest.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Migration/Contracts/MigrationAssessmentsRequest.cs @@ -11,6 +11,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration.Contracts public class MigrationAssessmentsParams { public string OwnerUri { get; set; } + public string[] Databases { get; set; } } public class MigrationAssessmentResult diff --git a/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs b/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs index 6afc85d3..0c1efc39 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Migration/MigrationService.cs @@ -134,12 +134,18 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration Version = Version.Parse(serverInfo.ServerVersion), Platform = hostInfo.Platform }; - - var db = SqlAssessmentService.GetDatabaseLocator(server, connection.Database); - var connectionString = ConnectionService.BuildConnectionString(connInfo.ConnectionDetails); - - var results = await GetAssessmentItems(connectionString); - await requestContext.SendResult(results); + var connectionStrings = new List(); + if (parameters.Databases != null) + { + foreach (string database in parameters.Databases) + { + connInfo.ConnectionDetails.DatabaseName = database; + connectionStrings.Add(ConnectionService.BuildConnectionString(connInfo.ConnectionDetails)); + } + string[] assessmentConnectionStrings = connectionStrings.ToArray(); + var results = await GetAssessmentItems(assessmentConnectionStrings); + await requestContext.SendResult(results); + } } catch (Exception e) { @@ -179,12 +185,12 @@ namespace Microsoft.SqlTools.ServiceLayer.Migration } } - internal async Task GetAssessmentItems(string connectionString) + internal async Task GetAssessmentItems(string[] connectionStrings) { SqlAssessmentConfiguration.EnableLocalLogging = true; SqlAssessmentConfiguration.EnableReportCreation = true; SqlAssessmentConfiguration.AssessmentReportAndLogsRootFolderPath = Path.GetDirectoryName(Logger.LogFileFullPath); - DmaEngine engine = new DmaEngine(connectionString); + DmaEngine engine = new DmaEngine(connectionStrings); var assessmentResults = await engine.GetTargetAssessmentResultsList(); Dictionary assessmentResultLookup = new Dictionary(); foreach (ISqlMigrationAssessmentResult r in assessmentResults)