Compartir a través de

SQL Edge 中的 SQL 数据库 DACPAC 和 BACPAC 包

重要

Azure SQL Edge 将于 2025 年 9 月 30 日停用。 有关详细信息和迁移选项,请参阅停用通知

注意

Azure SQL Edge 不再支持 ARM64 平台。

Azure SQL Edge 是已针对 IoT 和边缘部署进行了优化的关系数据库引擎。 它是在最新版 Azure SQL 数据库引擎的基础之上构建而成,此引擎提供了业界领先的性能、安全性和查询处理功能。 除了具有 SQL Server 的业界领先的关系数据库管理功能外,Azure SQL Edge 还提供了内置的流式处理功能,可用于实时分析和复杂事件处理。

Azure SQL Edge 提供原生机制,用于在部署 SQL Edge 期间或之后部署 SQL 数据库 DACPAC 和 BACPAC 包。

可以使用 MSSQL_PACKAGE 环境变量将 SQL 数据库 DACPAC 和 BACPAC 包部署到 SQL Edge。 可以通过以下任一方式配置环境变量。

  • SQL 容器内包含 DACPAC 和 BACPAC 文件的本地文件夹位置。 可以使用装入点或数据卷容器将此文件夹映射到主机卷。
  • SQL 容器中映射到 DACPAC 或 BACPAC 文件的本地文件路径。 可以使用装入点或数据卷容器将此文件路径映射到主机卷。
  • SQL 容器中映射到包含 DACPAC 或 BACPAC 文件的 zip 文件的本地文件路径。 可以使用装入点或数据卷容器将此文件路径映射到主机卷。
  • 包含 DACPAC 和 BACPAC 文件的 zip 文件的 Azure Blob SAS URL。
  • DACPAC 或 BACPAC 文件的 Azure Blob SAS URL。

结合使用 SQL 数据库 DAC 包与 SQL Edge

若要使用 Azure Blob 存储和 zip 文件部署(或导入)SQL 数据库 DAC 包 (*.dacpac) 或 BACPAC 文件 (*.bacpac),请按照以下步骤进行操作。

  1. 使用以下机制之一创建/提取 DAC 包或导出 BACPAC 文件。

    如果使用外部流式处理作业作为数据库的一部分,请确保:

    • 生成的 DACPAC 将捕获与输入/输出流和流式处理作业对应的所有 SQL Server 对象,但这些作业不会自动启动。 要让外部流式处理作业在部署后自动启动,请添加一个部署后脚本来重启作业,如下所示:

      EXEC `sys.sp_stop_streaming_job` @name = N'<JOB NAME>';
      GO
      EXEC `sys.sp_start_streaming_job` @name = N'<JOB NAME>';
      GO
      
    • 外部流式处理作业访问输入或输出流所需的凭据都作为 DACPAC 的一部分提供。

  2. 压缩 *.dacpac*.bacpac 文件并将其上传到 Azure Blob 存储帐户。 若要详细了解如何将文件上传到 Azure Blob 存储,请参阅使用 Azure 门户上传、下载和列出 Blob

  3. 使用 Azure 门户为 zip 文件生成共享访问签名。 有关详细信息,请参阅使用共享访问签名 (SAS) 委托访问权限

  4. 更新 SQL Edge 模块配置,以包含 DAC 包的共享访问 URI。 若要更新 SQL Edge 模块,请按照以下步骤操作:

    1. 在 Azure 门户中,转到 IoT 中心部署。
    2. 在左窗格中,选择“IoT Edge”。
    3. 在“IoT Edge”页上,找到并选择其中部署了 SQL Edge 模块的 IoT Edge。
    4. 在“IoT Edge 设备”设备页上,选择“设置模块”。
    5. 在“设置模块”页上,选择“Azure SQL Edge”模块。
    6. 在“更新 IoT Edge 模块”窗格上,选择“环境变量” 。 添加 MSSQL_PACKAGE 环境变量,并将上面步骤 3 中生成的 SAS URL 指定为环境变量的值。
    7. 选择“更新” 。
    8. 在“设置模块”页上,选择“查看 + 创建” 。
    9. 在“设置模块”页上,选择“创建” 。
  5. 在模块更新后,会针对 SQL Edge 实例下载、解压缩和部署包文件。

每当 Azure SQL Edge 容器重启时,SQL Edge 都会尝试下载压缩的文件包并评估是否有更改。 如果遇到了新版 DACPAC 文件,这些更改就会部署到 SQL Edge 中的数据库。

已知问题

在某些 DACPAC 或 BACPAC 部署过程中,用户可能会遇到命令超时,超时会导致 DACPAC 部署操作失败。 如果遇到此问题,请使用 SQLPackage.exe(或 SQL 客户端工具)手动应用 DACPAC 或 BACPAC。