【问题标题】:Bacpac vs dacpac for migrating database to Azure用于将数据库迁移到 Azure 的 Bacpac 与 dacpac
【发布时间】:2018-01-02 23:03:41
【问题描述】:

我正在将大型数据库(架构和数据)从本地服务器部署到 Azure SQL。我计划从命令行使用sqlpackage.exe。看起来有两种选择:

  1. 提取 DACPAC,然后将其发布到 Azure,使用 ExtractAllTableData 选项可在提取中包含数据
  2. 导出 BACPAC,然后将其导入 Azure

有首选吗?我需要这个过程以尽可能快的方式运行,所以我很好奇是否有一个选项对性能更好。

【问题讨论】:

    标签: sql-server azure-sql-database


    【解决方案1】:

    正如格兰特所说,bacpac 是 dacpac+data。下面是另一个可能有帮助的定义

    “bacpac 包含数据库中的架构和数据。dacpac 仅包含架构而不包含数据”

    你可能已经明白,你需要 bacpac。

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

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

    SQLSERVER 团队测试了几个选项,他们发现 与其他选项相比,BCP 最快..

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

    “C:\Users\cesardl\BCP\Customer.txt”中的 bcp TestDB.dbo.Customer
    -c -U mysqlazureuser@mysqlazureservername
    -S tcp:mysqlazureservername.database.windows.net
    -P 我的密码

    进一步阅读/参考:

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

    【讨论】:

    • 您是否也测试过 azcopy?我发现这是将文件存储起来的最快方法之一。其余的都是很好的信息。
    • 如果这对其他人有帮助,我还发现在导入数据库时​​定位正确的 Azure SQL 服务级别很重要。选择 Premium/PremiumRS 显着减少了导入时间。否则,您会达到 100% 的 DTU 并一直受到限制。
    • 很高兴知道,您也可以在导入后降级
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      BACPAC 导入:仅适用于空数据库或新数据库

      DACPAC + ExtractAllTableData with publish:目标数据库中可以有对象,默认会被覆盖

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 2020-12-13
        • 2013-05-11
        • 1970-01-01
        相关资源
        最近更新 更多