我正在使用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对它的支持语法。
答案 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。
版