在使用 VS13 数据库项目创建的 SQL Server 2008 R2 上部署 dacpac 的问题

Issue deploying dacpac on SQL Server 2008 R2 created using VS13 Database Project

我在 Visual Studio 2013 年有一个数据库项目,我用它创建一个 dacpac 文件并使用 SQL Server Management Studio 将其部署在 SQL 服务器上。我可以在 SQL Server 2012 上成功部署 dacpac,但是当我尝试在 SQL Server 2008 R2 上部署它时,我在选择 DAC 包时收到以下错误消息:

<DacType xmlns='http://schemas.microsoft.com/sqlserver/dac/Serialization/2012/02'> was not expected. (es3ttafd)

我已在项目设置下选择 "SQL Server 2008" 作为目标平台,但这似乎并没有修改命名空间。当我解压缩 dacpac 时,我可以看到这个命名空间存在于 DacMetadata.xml、model.xml 和 Origin.xml 文件中。

我能做些什么来停止在 dacpac 中包含该名称空间(或将其更改为正确的名称空间?),以便我可以将其部署在 SQL Server 2008 上吗?我可以通过 VS 在 SQL 服务器上成功发布项目,但我希望能够使用向导创建 dac 包并将其部署到其他服务器上。

谢谢。

我怀疑您正在使用旧版本的 SQL Server Management Studio 部署到 SQL Server 2008。我建议下载最新的 SSMS(可在此处获取:https://msdn.microsoft.com/en-us/library/mt238290.aspx) 并使用它来发布。

或者,最新版本的数据层应用程序框架(可在此处获取:https://www.microsoft.com/en-us/download/details.aspx?id=53876)包括 SqlPackage.exe,可用于发布 dacpac 文件,如下所示:

SqlPackage.exe /a:publish /tcs:"Data Source=SERVER;Initial Catalog=DBNAME;Integrated Security=true" /sf:C:\project\mydb.dacpac

在此处查看 SqlPackage.exe 的文档:https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx