目标平台概述
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
目标平台设置是在项目生成期间用于验证对项目中包含的功能的支持的一种项目属性,如 T-SQL 语法和系统函数。 目标平台设置合并到 .dacpac
生成项目中,在部署期间,将针对目标数据库检查目标平台设置以确保兼容性。 如果目标平台与数据库不匹配,则除非指定发布属性 /p:AllowIncompatiblePlatform=true
,否则部署不会开始。
SQL 项目文件示例和语法
目标平台项目属性包含在 <PropertyGroup>
项下的 .sqlproj
文件的 DSP
标记中:
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
</PropertyGroup>
...
DSP
标记中的目标平台的有效值包括:
Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider
(SQL Server 2014)Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider
(SQL Server 2016)Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider
(SQL Server 2017)Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider
(SQL Server 2019)Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
(SQL Server 2022)Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
(Azure SQL 数据库)Microsoft.Data.Tools.Schema.Sql.SqlDbFabricDatabaseSchemaProvider
(已镜像 Fabric 的 SQL 数据库,预览版)Microsoft.Data.Tools.Schema.Sql.SqlDwDatabaseSchemaProvider
(Azure Synapse SQL 池)Microsoft.Data.Tools.Schema.Sql.SqlServerlessDatabaseSchemaProvider
(Azure Synapse 无服务器 SQL 池)Microsoft.Data.Tools.Schema.Sql.SqlDwUnifiedDatabaseSchemaProvider
(Microsoft Fabric 中的 Synapse 数据仓库)
更改目标平台
要在 Visual Studio 项目中更改 SQL 项目的目标平台,右键单击“解决方案资源管理器”中的项目,然后选择“属性”。 在“属性”窗口的“项目设置”选项卡中,从“目标平台”下拉列表中选择所需的目标平台。
要在 Visual Studio 项目中更改 SQL 项目的目标平台,右键单击“解决方案资源管理器”中的项目,然后选择“属性”。 在“属性”窗口的“项目设置”选项卡中,从“目标平台”下拉列表中选择所需的目标平台。
若要在 SQL 数据库项目扩展中更改 SQL 项目的目标平台,请在“数据库项目”视图中右键单击该项目,然后选择“更改目标平台”。 从下拉列表中选择新的目标平台。
或者,可以直接编辑 .sqlproj
文件以更改目标平台。 从“资源管理器”视图中打开 .sqlproj
文件,或通过右键单击“数据库项目”视图中的项目并选择“编辑 .sqlproj 文件”来打开该文件。 从文本编辑器中,将 DSP 标记中的值更改为所需的目标平台。
若要为与 .sqlproj
文件中指定的目标平台不同的目标平台生成 SQL 项目,请使用 /p:DSP=
命令行参数。 例如,若要为 SQL Server 2019 兼容性生成 SQL 项目,请执行以下操作:
dotnet build /p:DSP=Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider
发布到其他目标平台
发布 SQL 项目时,该项目的目标平台必须与数据库的目标平台匹配。 如果目标平台不匹配,则部署将在应用任何更改前退出并显示错误。 若要将项目发布到具有不同目标平台的数据库,请使用 /p:AllowIncompatiblePlatform=true
发布属性。