【问题标题】:How can I restore a bacpac file to SQL Server linux docker container?如何将 bacpac 文件还原到 SQL Server linux docker 容器?
【发布时间】:2018-07-02 07:41:25
【问题描述】:

我正在尝试为 Docker 设置集成测试环境。我们需要将 bacpac 恢复到我们的 mssql-server-linux:latest 图像,以便我们可以基于数据集运行测试。

我的撰写文件如下所示:

version: '3'

services:
    projectweb:
        image: projectweb
        build:
            context: .
            dockerfile: Project\Dockerfile
        depends_on:
            - db
    db:
        image: "microsoft/mssql-server-linux"
        environment:
            SA_PASSWORD: "MyVerySecurePassword"
            ACCEPT_EULA: "Y"        
        volumes:
            - ./database:/tmp

我不需要对数据库的更改在容器生命周期之后持久化。我只需要编写脚本将数据输入其中。我没有太多使用 docker 或 SQL Server for Linux 的经验。我假设我需要等待容器被初始化和数据库设置并启动,然后执行一个从 tmp 文件夹读取数据库 bacpac 的脚本。据我了解,我应该使用 sqlpackage 但这不是appear to be in the container?我需要另一个装有这个 SSDT/sqlpackage 的容器吗?我可以将 splpackage 安装到容器中吗?

导入 bacpac 数据的最佳方法是什么?

【问题讨论】:

  • sqlpackage.exe 需要 Windows,因此您需要一个 Windows 容器(或其他 Windows 机器)将 bacpac 部署到 Linux 或 Linux 容器上的 SQL Server。您可以从数据库备份中恢复,而不是使用 bacpac 来避免 Windows 依赖性。
  • 好的。 bak 文件对我们真的不起作用——因为它是用于数据的 SQL Azure——而且很确定我们无法从中获取 bak 文件。但是猜测必须有其他选项而不是 bacpac
  • @DanGuzman 我很清楚 - 曾经有一种方法可以通过 linux 上的 sqlpackage 来做到这一点? reverentgeek.com/…那个MS目前根据github线程删除了?
  • 可能曾经有一个 Linux 版本可用,但目前不可用。微软正在加强对开源跨平台数据库工具的支持,但它仍在进行中。我希望 sqlpackage 或者它等效于将来可用于 Linux,但是当它是任何人的猜测时。目前,sqlpackage 需要 Windows。

标签: sql-server linux docker docker-compose sql-server-linux


【解决方案1】:

此问题现已解决。 Microsoft 有一个适用于 Linux 的适当 sql 包。这可以安装到自定义映像中。 https://docs.microsoft.com/en-us/sql/tools/sqlpackage?view=sql-server-2017

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多