从 2008 R2 导出 Bacpac 在 Azure 验证规则上失败

Export Bacpac from 2008 R2 fails on Azure validation rules

我正在使用 Powershell 探索 Microsoft.SqlServer.Dac.dll 中的 SSDT .NET class 产品,并且我正在尝试将数据库用于基于源代码控制的 SDLC 作为概念证明.我尝试的第一件事是导出 bacpac,以便我们可以将数据库传播到我们的测试环境,并最终传播到生产环境。

到目前为止,我在使用 DacServices.Extract 导出 dacpac 时没有遇到任何问题。但是,当我尝试使用 DacServices.ExportBacpac 导出同一个数据库时,会报告大量错误,类似于:

Error validating element [dbo].[GetNewCustomers]: Deprecated feature 'Table hint without WITH' is not supported on SQL Azure.

我知道报告的错误是什么(使用 (NOLOCK) 提示而不是 WITH (NOLOCK))。但是,我的工作站上安装了 Sql Server 2012 工具集,我使用的数据库是 Sql Server 2008 R2,所以我不关心 Azure 对该语法的支持。

你想达到什么目的?如果您想使用 SSDT,最好的入门方法是创建一个新项目并从您的数据库中导入(或在某处恢复备份并从中导入)

这应该让你开始:

https://the.agilesql.club/Blogs/Ed-Elliott/HOWTO-Get-An-Existing-Schema-Into-SSDT

https://the.agilesql.club/taxonomy/term/34

您确实可以控制所使用的版本,但这只是它是 Azure 版本 11 还是 12。

埃德

Bacpac 文件旨在用于 Azure SQL DB migration/archiving 方案,因此导出机制始终强制要求 bacpac 文件的内容可以导入到 Azure SQL 数据库。为避免此限制,您可以提取包含所有 table 数据的 dacpac 文件,其行为与 bacpac 文件非常相似。

或者,最新版本的 DACFx 支持 Azure SQL 数据库 V12 表面积,相对于以前的版本显着扩展。您会发现您遇到的特定错误不再阻止导出完成,因为 Azure SQL 数据库的扩展表面积支持该语法。