首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有sqlcmd的docker容器中初始化Server数据库

在没有sqlcmd的docker容器中初始化Server数据库
EN

Stack Overflow用户
提问于 2022-04-07 05:44:59
回答 2查看 2.7K关注 0票数 5

我的工作是一个MacBook Pro与M1 CPU,所以我不能使用“正常”的mssql映像。我使用的是azure-sql-edge,它没有sqlcmd来初始化数据库(创建模式、数据库、登录)。

我已经创建了一个sql脚本,一旦容器启动,我想运行它,但是我找不到sqlcmd的替代方案。

还有别的办法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-07 09:49:13

我也有同样的问题,我使用了来自微软注册表的mssql-tools停靠图像.

样品码头-组成:

代码语言:javascript
复制
---
version: '3.8'

services:
  mssql:
    image: mcr.microsoft.com/azure-sql-edge:latest
    command: /opt/mssql/bin/sqlservr
    environment:
      ACCEPT_EULA: "Y"
      SA_PASSWORD: "SA_Passw0rd"
    stdin_open: true
    ports:
      - 1433:1433
    networks:
      - db_net
  sqlcmd:
    image: mcr.microsoft.com/mssql-tools:latest
    command: /opt/mssql_scripts/run-initialization.sh
    stdin_open: true
    volumes:
      - ./mssql_scripts:/opt/mssql_scripts
    networks:
      - db_net
networks:
  db_net:
    name: db_net

要使用这个停靠-组合,您需要有一个名为run-initialization.sh的shell脚本,它在mssql_scripts文件夹中具有执行权限。

run-initialization.sh脚本等待数据库启动,然后执行sql命令:

/opt/mssql-tools/bin/sqlcmd -S mssql -U SA -P SA_Passw0rd -d master -Q "SELECT version()"

或者如果您想要从test.sql文件执行:

/opt/mssql-tools/bin/sqlcmd -S mssql -U SA -P SA_Passw0rd -d master -i /opt/mssql_scripts/test.sql

票数 2
EN

Stack Overflow用户

发布于 2022-09-25 17:32:50

上面的解决方案适用于我使用Mac M1芯片,不需要创建一个shell脚本就可以直接运行命令。

代码语言:javascript
复制
sqlcmd:
    image: mcr.microsoft.com/mssql-tools:latest
    stdin_open: true
    environment:
        - MSSQL_SA_PASSWORD=Xxx
        - MSSQL_DATABASE=test
        - MSSQL_BACKUP="/opt/mssql/test.bak"
    volumes:
        - ./test_data.bak:/opt/mssql/test.bak
    command: /bin/bash -c '/opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P $$MSSQL_SA_PASSWORD -d tempdb -q "EXIT(RESTORE DATABASE $$MSSQL_DATABASE FROM DISK = $$MSSQL_BACKUP)"; wait;'

mssql:
    image: mcr.microsoft.com/azure-sql-edge:latest
    environment:
        - ACCEPT_EULA=Y
        - MSSQL_SA_PASSWORD=Xxxx
        - MSSQL_DATABASE=test
        - MSSQL_SLEEP=7
    ports:
        - 1433:1433
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71776934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档