将数据层应用程序 (bacpac) 导入到 azure SQL Edge docker 实例中

问题描述 投票:0回答:1

我正在尝试将数据从 .bacpac sql 数据文件导入到 azure sql Edge 容器中。我尝试了两种方法来实现它,但不幸的是没有运气。

  1. 使用sqlpackage cmd工具将bacpac文件导入到sql实例中。
  • 在 azure sql Edge 的运行容器中,下载并安装了适用于 Linux 的 sqlpackage-tool。
  • 已将
    .bacpac
    文件从主机复制到容器
    docker cp host\bpCustomer.bacpac  azuresqledge:/home/mssql/backpack/mydatabase.bacpac
  • 使用命令导入数据库:
    $ sqlpackage /Action:Import /tsn:localhost /tdn:target_db_name /tu:sa /tp:mypassword /sf:home/mssql/backpack/mydatabase.bacpac

从 sql 实例收到此错误:

导入数据库时出错:无法导入包。 无法连接到目标服务器“localhost”。请验证连接信息,例如目标服务器的服务器名称、登录凭据和防火墙规则。 与服务器成功建立连接,但在登录前握手期间发生错误。 (提供者:TCP 提供者,错误:35 - 捕获内部异常) 远程证书被提供的 RemoteCertificateValidationCallback 拒绝。 如果服务器配置不当,连接加密或服务器证书信任的设置可能会导致连接失败。

  • 修改了信任目标服务器证书的命令:
    $ sqlpackage /Action:Import /tsn:localhost /tdn:target_db_name /tu:sa /tp:mypassword /sf:home/mssql/backpack/mydatabase.bacpac /ttsc:true

导入数据库时出错:无法导入包。 警告 SQL74501:源包含依赖目标不支持的外部身份验证提供程序的用户。这些用户将被视为未登录的用户。 错误 SQL72014:核心 Microsoft SqlClient 数据提供程序:消息 12824,级别 16,状态 1,第 5 行 sp_configure 值“包含的数据库身份验证”必须设置为 1 才能更改包含的数据库。您可能需要使用 RECONFIGURE 来设置 value_in_use。

  • 尝试运行以下查询来运行 sql 实例:
    sp_configure 'contained database authentication', 1; GO   RECONFIGURE;   GO
    但收到此错误,说 azure sql Edge 不支持
    contained database authentication
    功能

此版本的 SQL Server 不支持指定的选项“包含数据库身份验证”,并且无法使用 sp_configure 进行更改。

  1. 提供db的.bak文件。
  • 将 .bak 文件复制到位于
    var/opt/mssql/backup
  • 的容器中
  • 使用以下sql查询来恢复数据库。
Restore FilelistOnly from disk = N'/var/opt/mssql/backup/mydatabase.bak'

Restore Database mydatabase
From disk = N'/var/opt/mssql/backup/mydatabase.bak'
WITH MOVE 'mydatabase_Data' TO '/var/opt/mssql/data/mydatabase_Primary.mdf',
MOVE 'mydatabase_Log' TO '/var/opt/mssql/data/mydatabase_Primary.ldf';
  • 又出现这个错误,关于设置
    contained database authentication = 1
    The sp_configure value 'contained database authentication' must be set to 1 in order to restore a contained database.  You may need to use RECONFIGURE to set the value_in_use.

TLDR;需要有关如何将 sql .bacpac 文件恢复到 azure sql Edge docker 容器中的帮助。

docker sqlpackage bacpac azure-sql-edge
1个回答
0
投票

我使用的“.bacpac”文件仅兼容在支持“包含数据库”功能的数据库引擎上使用,正如 @thom-a 在上面的评论中提到的。 Azure SQL Edge 不支持此功能来导入包含的数据库“.bacpac”。 Azure SQL Edge 不支持的功能

但是,我们使用了“生成 SQL 脚本”选项将架构和数据获取到 SQL 脚本中。

© www.soinside.com 2019 - 2024. All rights reserved.