【问题标题】:Publish DACPAC to SQL Server 2014 using SqlPackage.exe?使用 SqlPackage.exe 将 DACPAC 发布到 SQL Server 2014?
【发布时间】:2014-06-16 01:05:23
【问题描述】:

我已经使用 SQL Server Data Tools 安装的 SqlPackage.exe 成功地将 DACPAC 发布到 SQL Server 2008-2012 实例(通常在 C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin 中找到)。但是,在尝试使用相同的 SqlPackage.exe 将面向 2014 的 DACPAC 发布到 SQL Server 2014 实例时,我得到以下信息:

*** Could not deploy package.
Internal Error. The database platform service with type Microsoft.Data.Tools.
Schema.Sql.Sql120DatabaseSchemaProvider is not valid. You must make sure the
service is loaded, or you must provide the full type name of a valid database
platform service.

我发现的信息很少;我发现最接近的是 problem 发布到 Azure。

我一直在更新 SSDT 补丁,但我猜测我拥有的 SqlPackage.exe(显示 11.0.2902.0 版本)根本不兼容。我可以使用 Visual Studio 2012 的 Publish 命令发布到同一个实例,因此实例本身似乎不是问题。

是否有更新版本的 SqlPackage 可以支持将 2014 DACPAC 发布到 2014 服务器?还是另一种可编写脚本的方法?

【问题讨论】:

    标签: sql-server-2014 sql-server-data-tools sqlpackage


    【解决方案1】:

    是的,有一个支持 SQL Server 2005-2016 的新版本可用,它安装到与以前(SQL Server 2012 及更低版本)版本不同的位置。事实上,根据您是仅使用 SSDT 还是将其安装为 SSMS 的一部分或独立安装程序,您将拥有不同的安装位置。

    • SSDT 在最新版本的 Visual Studio 中安装 Dac DLL。这是为了避免需要全部更新才能使用最新代码的并行问题(Visual Studio 2012 vs 2013 vs SSMS)。

      • 如果你有updated to the latest SSDT,你会在VS安装目录\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130中找到SqlPackage.exe和相关的DLL。对于 VS2013,VS 安装目录是 C:\Program Files (x86)\Microsoft Visual Studio 12.0,对于 VS2015 是 14.0。
    • SQL Server Management Studio (SSMS) 和独立的Dac Framework MSI 都安装到系统范围的位置。这是C:\Program Files (x86)\Microsoft SQL Server\130\Dac\bin

    【讨论】:

    • 哇,我们不小心丢弃了一些用户(在测试中),因为旧版本不支持最新的 DoNotDropUsers 设置!
    • 在我的(64 位)版本的 Windows Server 2008 R2 上,DAC 框架 MSI 将 SqlPackage.exe 放在 C:\Program Files 文件夹中,不是 C: \Program 文件 (x86) 文件夹。确保检查这两个位置。
    • 经过数小时的故障排除后,这对我们有用。谢谢你的帮助!
    • 您需要选择 SQL 2014 安装功能树中的哪个功能来安装它?
    • @PeteStensønes 工具独立于 SQL Server(并且向后兼容)。如需最新 SSDT,请访问 msdn.microsoft.com/en-us/library/mt204009.aspx。对于 SSMS,请转到 msdn.microsoft.com/en-us/library/mt238290.aspx。这些适用于 SQL Server 2016。我还将更新此答案以反映最新工具为 130 的事实
    【解决方案2】:

    现在有一个官方的Microsoft.Data.Tools.Msbuild NuGet 包,其中包含 SqlPackage.exe 和一个带有详细信息的blog post

    此 NuGet 包包含构建和发布 SQL 项目 (.sqlproj) 所需的所有组件。这支持持续集成和持续部署方案——可以在本地构建代理上构建 SQL 项目,而无需安装完整的 Visual Studio 或 SQL Server Data Tools (SSDT) 产品。

    【讨论】:

    • 你如何使用这个包?您不能将 NUGET 包添加到数据库项目中...
    • @MarkWalsh,我在命令行上运行了nuget.exe install Microsoft.Data.Tools.Msbuild。您也可以将其安装到不同的项目中 - 您只需将 EXE 拉到本地文件夹即可。
    • 安装 SQL Server Data Tools 后看到这篇文章太晚了,真可惜
    【解决方案3】:

    SSDT 在最新版本的 Visual Studio 中安装 Dac DLL。这是为了避免需要全部更新才能使用最新代码的并行问题(Visual Studio 2012 vs 2013 vs SSMS)。 如果您已更新到最新的 SSDT,您会在 VS 安装目录\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130 中找到 SqlPackage.exe 和相关的 DLL。对于 VS2013,VS 安装目录是 C:\Program Files (x86)\Microsoft Visual Studio 12.0,对于 VS2015 是 14.0。 SQL Server Management Studio (SSMS) 和独立的 Dac Framework MSI 都安装到系统范围的位置。这是 C:\Program Files (x86)\Microsoft SQL Server\130\Dac\bin。

    **Kevin Cunnane 先生的回答。是一个正确的过程,但如果 sql2016 中的数据库使用 140\dac **

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      相关资源
      最近更新 更多