无法导入 SQL Azure V12 BACPAC:"type Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider is not valid"

Unable to import SQL Azure V12 BACPAC: "type Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider is not valid"

我正在尝试将导出的 BACPAC 从 SQL Azure (v12) 数据库导入本地 SQL Server 2012 实例,但我不断收到以下错误。我已尝试安装从 this blog post 链接的 DAC 和 SSDT 更新,但没有帮助。

我该如何解决这个问题?

TITLE: Microsoft SQL Server Management Studio
------------------------------

Count not load schema model from package. (Microsoft.SqlServer.Dac)

------------------------------
ADDITIONAL INFORMATION:

Internal Error. The database platform service with type Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider 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. (Microsoft.Data.Tools.Schema.Sql)

------------------------------
BUTTONS:

OK
------------------------------

更新: 新的 SQL Server Management Studio Preview 是导入到 Azure SQL 数据库的最佳方式。它支持所有最新的 Azure SQL 数据库功能和验证。此外,它还有一个独立的 Web 安装程序,每个月都会在新功能可用时自动更新。鉴于下面提到安装 CU 更新的困难的评论,这将是解决问题的更简单、更快速的解决方案。

原答案: 如果您使用 SQL Server Management Studio 执行导入,则必须安装 SSMS 2014 CU5 或 CU6。有关安装 CU6 的信息可用 here。您问题中显示的错误表明您使用的是旧版本的 SSMS。

**更新:** 针对 Martin 在下面的回答,我想澄清两件事。

  1. SSMS for SQL Server 2014 是唯一完全支持新的 Azure SQL DB v12 功能的 SSMS 版本,特别是针对此目标的 Import/Export .这是因为 v12 具有(几乎)与 SQL Server 2014 相同的功能,而旧版本的工具不支持此功能。请注意,SSMS 2014 完全向后兼容 SQL Server 2005 及更高版本。

  2. 有一个单独的临时问题导致数据库升级 Azure SQL DB v12 出现问题。此问题已得到解决,在 Plan and Prepare to Upgrade page. In summary if you've exported a bacpac that is failing to import due to this issue you can download the latest DacFramework.msi from here 的 C3 部分中找到有关解决此问题的信息的正确位置可在 SSMS 中解决此问题。

完全披露:我在 SQL 服务器工具团队工作。

我遇到了同样的问题。

安装 Cumulative update package 6 as suggested 有助于避免第一个错误,但只会陷入下一个错误。

与此主题相关:

SQL Azure import of bacpac does not work after upgrade to v12

这是 Microsoft 尚未修复或解决方法的错误。

编辑:SQL恢复需要 Management Studio 2014(2012 不起作用)

如果有的话,我想会更新的。

编辑:在上面提到的 link 中,您现在可以找到解决方法:您需要创建 V12 数据库的副本。此副本可以在您的本地 sql 服务器 2014 上导出和重新导入。

仅仅更新工具并没有帮助。

要修复 [sys].[script_deployment_databases] 从导出的 V12 数据库导入错误,您必须安装:

  1. CU13
  2. Microsoft SQL Server Data-Tier Application Framework (February 2015)(您必须安装 BOTH x64 和 x86 版本)。

编辑:CU13 不是必需的,先尝试第二个 link!

安装以下软件即可!
1) 您是否为 SQL Server Management Studio 2014 安装了累积更新 5。http://support2.microsoft.com/kb/3011055
2) Microsoft SQL 服务器数据层应用程序框架(2015 年 2 月)(您必须同时安装 x64 和 x86 版本)。 http://www.microsoft.com/en-us/download/details.aspx?id=45886

我使用的是 11.0.2100.60 版本,遇到了同样的问题。已安装 Microsoft® SQL Server® Data-Tier Application Framework (February 2015)。之后一切正常。

我从 SQL Azure (v12) 进行数据库备份时遇到了同样的问题。

我已经安装了 Microsoft® SQL Server® Data-Tier Application Framework (February 2015)(为了正常工作,您需要同时安装 x64 和 x86 版本)。 首先我安装了 x64 版本并尝试恢复数据库 - 但它没有用。之后我安装了x86版本,我可以成功恢复数据库。

我的 SQL 服务器版本:Microsoft SQL Server 2014 - 12.0.2269.0 (X64)。 OS:Windows 10 x64 构建 10240。

坦克斯。

安装最新的 SQL Server Management Studio 2016 Preview 后,从 Azure DB 恢复 BacPac 失败。解决方案是为我的本地 SQL 数据库实例设置 "Contained Database Authentication" = 1。在您的本地实例上阅读有关解决方案 here 或 运行 的脚本:

使用大师 走 重新配置 走 sp_configure 'CONTAINED DATABASE AUTHENTICATION', 1

我使用了错误的 SqlPackage.exe 路径。

无效:

C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin\SqlPackage.exe

作品:

C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin\SqlPackage.exe
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\SqlPackage.exe