我正在尝试将数据从 .bacpac sql 数据文件导入到 azure sql Edge 容器中。我尝试了两种方法来实现它,但不幸的是没有运气。
.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。
sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO
但收到此错误,说 azure sql Edge 不支持 contained database authentication
功能此版本的 SQL Server 不支持指定的选项“包含数据库身份验证”,并且无法使用 sp_configure 进行更改。
var/opt/mssql/backup
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 容器中的帮助。
我使用的“.bacpac”文件仅兼容在支持“包含数据库”功能的数据库引擎上使用,正如 @thom-a 在上面的评论中提到的。 Azure SQL Edge 不支持此功能来导入包含的数据库“.bacpac”。 Azure SQL Edge 不支持的功能
但是,我们使用了“生成 SQL 脚本”选项将架构和数据获取到 SQL 脚本中。