Bacpac vs dacpac用于将数据库迁移到Azure

时间:2018-01-02 23:03:42

标签: sql-server azure-sql-database

我正在将一个大型数据库(包括架构和数据)从内部部署服务器部署到Azure SQL。我打算从命令行使用sqlpackage.exe。看起来有两种选择:

  1. 提取DACPAC,然后使用。将其发布到Azure ExtractAllTableData选项以在提取中包含数据
  2. 导出BACPAC,然后将其导入Azure
  3. 有首选方案吗?我需要这个过程尽可能以最快的方式运行,所以如果一个选项对性能更好,我会很好奇。

3 个答案:

答案 0 :(得分:5)

正如Grant所说,bacpac是dacpac + data.Below是另一个可能有帮助的定义

“bacpac包含来自数据库的架构和数据.dacpac只收集架构而不是数据”

你可能已经理解,你需要bacpac。

  

我需要这个过程尽可能以最快的方式运行,所以如果一个选项对性能更好,我会很好奇。

我们在Azure中有很少的数据库(400Gb)。我们观察到当我们从存储加载数据时导入数据更快。我们遵循的方法是将数据加载到与数据库位于同一位置的存储中,然后导入数据..

SQLSERVER团队测试了一些选项,他们观察到 BCP与剩余选项相比最快 ..

enter image description here

以下是将bcp数据导入azure的方法

  

bcp TestDB.dbo.Customer在“C:\ Users \ cesardl \ Desktop \ Arquitectura Marco .NET DPE Spain_Windows Azure V \ BCP \ Customer.txt”-c -U mysqlazureuser @ mysqlazureservername -S tcp:mysqlazureservername.database。 windows.net -P mypassword

进一步阅读/参考资料:

Importing/Exporting data to SQL Azure databases using BCP and SQL Scripts
Loading data to SQL Azure the fast way

答案 1 :(得分:1)

DACPAC加数据是BACPAC。就个人而言,我会使用BACPAC方法。

答案 2 :(得分:1)

具有导入功能的BACPAC:仅适用于空数据库或新数据库

带有发布的DACPAC + ExtractAllTableData:您可以在目标数据库中拥有对象,并且默认情况下它将被覆盖

相关问题