diff --git a/Packages.props b/Packages.props index 43f5fb4c..1eef4418 100644 --- a/Packages.props +++ b/Packages.props @@ -29,7 +29,7 @@ - + diff --git a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.cs b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.cs index 7f6d072f..1a51ae03 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.cs @@ -11388,6 +11388,11 @@ namespace Microsoft.SqlTools.ServiceLayer return Keys.GetString(Keys.PropertyNotInitialized, propertyName); } + public static string InvalidDspFormatError(string dsp) + { + return Keys.GetString(Keys.InvalidDspFormatError, dsp); + } + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Keys { @@ -15758,6 +15763,9 @@ namespace Microsoft.SqlTools.ServiceLayer public const string PropertyNotInitialized = "PropertyNotInitialized"; + public const string InvalidDspFormatError = "InvalidDspFormatError"; + + private Keys() { } diff --git a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.resx b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.resx index b98ab7b9..25c4f132 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.resx +++ b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.resx @@ -6028,4 +6028,9 @@ The Query Processor estimates that implementing the following index could improv . Parameters: 0 - propertyName (string) + + Invalid value for Database Schema Provider: '{0}'; expected to be in the form 'Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'. + . + Parameters: 0 - dsp (string) + diff --git a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.strings b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.strings index 7a283440..e5e76842 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.strings +++ b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.strings @@ -2426,5 +2426,9 @@ HyperscaleAzureEdition = Hyperscale ############################################################################# # Server Properties -############################################################################ -PropertyNotInitialized(string propertyName) = Property '{0}' was set before initialization. \ No newline at end of file +PropertyNotInitialized(string propertyName) = Property '{0}' was set before initialization. + +############################################################################# +# SqlProjects + +InvalidDspFormatError(string dsp) = Invalid value for Database Schema Provider: '{0}'; expected to be in the form 'Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'. \ No newline at end of file diff --git a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.xlf b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.xlf index cd93d006..9a293c41 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.xlf +++ b/src/Microsoft.SqlTools.ServiceLayer/Localization/sr.xlf @@ -7364,6 +7364,12 @@ The Query Processor estimates that implementing the following index could improv 7 Days + + Invalid value for Database Schema Provider: '{0}'; expected to be in the form 'Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'. + Invalid value for Database Schema Provider: '{0}'; expected to be in the form 'Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider'. + . + Parameters: 0 - dsp (string) + \ No newline at end of file diff --git a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs index de85ca33..0d8f9258 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/SqlProjects/SqlProjectsService.cs @@ -117,7 +117,14 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects { await RunWithErrorHandling(async () => { - await SqlProject.CreateProjectAsync(requestParams.ProjectUri, new SqlServer.Dac.Projects.CreateSqlProjectParams() { ProjectType = requestParams.SqlProjectType, DspVersion = requestParams.DatabaseSchemaProvider }); + SqlServer.Dac.Projects.CreateSqlProjectParams createParams = new() + { + ProjectType = requestParams.SqlProjectType, + TargetPlatform = requestParams.DatabaseSchemaProvider == null ? null : Utilities.DatabaseSchemaProviderToSqlPlatform(requestParams.DatabaseSchemaProvider), + BuildSdkVersion = requestParams.BuildSdkVersion + }; + + await SqlProject.CreateProjectAsync(requestParams.ProjectUri, createParams); this.GetProject(requestParams.ProjectUri); // load into the cache }, requestContext); } @@ -169,7 +176,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects internal async Task HandleSetDatabaseSchemaProviderRequest(SetDatabaseSchemaProviderParams requestParams, RequestContext requestContext) { - await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri, onlyLoadProperties: true).Properties.DatabaseSchemaProvider = requestParams.DatabaseSchemaProvider, requestContext); + await RunWithErrorHandling(() => GetProject(requestParams.ProjectUri, onlyLoadProperties: true).Properties.TargetSqlPlatform = Utilities.DatabaseSchemaProviderToSqlPlatform(requestParams.DatabaseSchemaProvider), requestContext); } #endregion diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs index 6d659c5b..b5fe22d6 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs +++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/SqlProjects/SqlProjectsServiceTests.cs @@ -7,6 +7,7 @@ using System; using System.IO; using System.Linq; using System.Threading.Tasks; +using Microsoft.Data.Tools.Schema.SchemaModel; using Microsoft.SqlServer.Dac.Projects; using Microsoft.SqlTools.ServiceLayer.IntegrationTests.Utility; using Microsoft.SqlTools.ServiceLayer.SqlProjects; @@ -62,13 +63,17 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects await service.HandleCreateSqlProjectRequest(new ServiceLayer.SqlProjects.Contracts.CreateSqlProjectParams() { ProjectUri = sdkProjectUri, - SqlProjectType = ProjectType.SdkStyle + SqlProjectType = ProjectType.SdkStyle, + DatabaseSchemaProvider = "Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider", // non-default DSP + BuildSdkVersion = "0.1.7-preview" // non-default (old) SDK version }, requestMock.Object); requestMock.AssertSuccess(nameof(service.HandleCreateSqlProjectRequest), "SDK"); Assert.AreEqual(1, service.Projects.Count, "Number of loaded projects after creating SDK not as expected"); Assert.IsTrue(service.Projects.ContainsKey(sdkProjectUri), "Loaded project list expected to contain SDK project URI"); Assert.AreEqual(ProjectType.SdkStyle, service.Projects[sdkProjectUri].SqlProjStyle, "SqlProj style expected to be SDK"); + Assert.AreEqual(SqlPlatforms.SqlAzureV12, service.Projects[sdkProjectUri].Properties.TargetSqlPlatform, "Target SQL platform expected to be Azure"); + Assert.AreEqual("0.1.7-preview", service.Projects[sdkProjectUri].MicrosoftBuildSqlSdkVersion, "SQL SDK version expected to be 0.1.7-preview"); // Validate creating Legacy-style project requestMock = new();