使用 AT TIME ZONE 时无法构建针对 Azure SQL 数据库的 Visual Studio 数据库项目

Rob*_*use 4 sql-server azure visual-studio azure-sql-database

我们有一个Visual Studio 数据库项目,正尝试将其迁移到 Azure SQL 数据库。我们的一些视图使用Azure SQL 数据库支持的AT TIME ZONE,但是当我在项目属性中将数据库目标平台切换到 Microsoft Azure SQL 数据库时,它无法构建并出现错误:

错误:SQL46010:TIME 附近的语法不正确。

数据库项目属性

我已直接连接到 Azure 中的数据库,并且可以使用AT TIME ZONE,但无法DACPAC从项目中创建或发布文件。

This SO 答案建议将目标切换到 SQL Server 2016,但随后您无法将其部署DACPAC到 Azure。它会给出错误

将 SQL Server 2016 指定为目标平台的项目无法发布到 Microsoft Azure SQL Database v12。

从 Visual Studio 或命令行使用sqlpackage.exe. (与所有目标相同)。

这似乎是 Visual Studio Data Tools 中长期存在的错误,因此其他人肯定也遇到过它。有人有解决方法或建议吗?

Rob*_*use 6

我通过另一个渠道找到了这个问题的答案。这是 Visual Studio 16.4 和 16.5 当前预览版中的一个错误。

Visual Studio 16.4 版本删除了对 Microsoft Azure SQL 数据库 V11 的支持。在这样做时,他们删除了Microsoft Azure SQL 数据库 V12的项目目标,使Microsoft Azure SQL 数据库成为唯一的选择。这个新选项的目的是切换到针对 V12,但存在一个错误,它仍然针对 V11。

16.4 中删除的选项

在 Visual Studio 的未来更新中修复此问题之前,解决方法是手动编辑SQLPROJ文件并更改行;

<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureDatabaseSchemaProvider</DSP>
Run Code Online (Sandbox Code Playgroud)

加入V12使其成为;

<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
Run Code Online (Sandbox Code Playgroud)

保存并重新打开解决方案。它现在可以编译,我可以部署到 Azure。

  • Rob 在我分享的第一篇文章中做了同样的事情 https://medium.com/modern-stack/deploy-a-sql-dacpac-to-azure-using-vsts-d24fb473302f (2认同)

Ala*_*bra 6

这只是问题第二部分的答案。

.dacpac我在从免费的 azure sql 数据库发布到基本计划中的数据库时遇到了同样的错误。

将 SQL Server 2016 指定为目标平台的项目无法发布到 Microsoft Azure SQL Database v12。

Allow incompatible platform我通过检查Advance的设置发现了这一点Publish Data-tier Application

在此输入图像描述