0

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

到目前为止,我在导出 dacpac 时使用DacServices.Extract. 但是,当我尝试使用 导出相同的数据库时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 中的脚本中?
4

2 回答 2

2

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

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

于 2016-01-11T23:07:41.060 回答
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。

埃德

于 2016-01-11T20:15:18.510 回答