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

时间:2016-01-11 16:58:54

标签: sql-server sql-server-data-tools dacpac bacpac sqlproj

我正在使用Powershell探索Microsoft.SqlServer.Dac.dll中的SSDT .NET类产品,我试图将数据库作为基于源代码控制的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对它的支持语法。

  • 当我提取bacpac时,有没有办法告诉Dac框架我没有使用Azure?
  • 我是以错误的方式来做这件事的吗?我应该尝试将数据转换为我的sqlproj中的脚本吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

你想要达到什么目的?如果您想使用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。