You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose YML文件中附加现有MSSQL数据库?

如何在Docker Compose中为MSSQL容器附加已有数据库

步骤1:准备数据库文件

把已有数据库的.mdf(数据文件)和.ldf(日志文件)复制到宿主机指定目录,比如C:\Temp\SqlVolume\attach。

步骤2:修改Docker Compose配置

在db服务中添加卷映射挂载数据库文件,同时增加启动命令执行附加操作。修改后的完整db服务配置如下:

db:
  image: "mcr.microsoft.com/mssql/server:2019-latest"
  user: root
  ports:
    - "14330:1433"
  environment:
      MSSQL_SA_PASSWORD: "SqlPassw0rd!"
      ACCEPT_EULA: "Y"
  volumes:
    - C:\Temp\SqlVolume\data:/var/opt/mssql/data
    - C:\Temp\SqlVolume\log:/var/opt/mssql/log
    - C:\Temp\SqlVolume\secrets:/var/opt/mssql/secrets
    # 新增挂载存放已有数据库文件的目录
    - C:\Temp\SqlVolume\attach:/var/opt/mssql/attach
  # 启动时执行附加数据库的命令
  command: >
    /bin/bash -c "
    /opt/mssql/bin/sqlservr &
    sleep 30s &&
    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'SqlPassw0rd!' -Q '
    -- 附加用户库
    CREATE DATABASE LevSundtUsers
    ON (FILENAME = ''/var/opt/mssql/attach/LevSundtUsers.mdf''),
    (FILENAME = ''/var/opt/mssql/attach/LevSundtUsers.ldf'')
    FOR ATTACH;
    -- 附加业务库
    CREATE DATABASE LevSundtDomain
    ON (FILENAME = ''/var/opt/mssql/attach/LevSundtDomain.mdf''),
    (FILENAME = ''/var/opt/mssql/attach/LevSundtDomain.ldf'')
    FOR ATTACH;
    ' &&
    wait
    "
  container_name: sql2019
  hostname: sql1

关键说明

  • 卷映射:新增的C:\Temp\SqlVolume\attach:/var/opt/mssql/attach让容器能访问宿主机上的已有数据库文件。
  • 启动命令:先启动SQL Server服务,等待30秒确保服务就绪后,用sqlcmd执行附加数据库的SQL语句。如果只需附加单个数据库,删除多余的CREATE DATABASE块即可,同时替换语句中的文件名与你实际的数据库文件一致。
  • 权限检查:因使用user: root,容器对挂载目录的读写权限通常足够;若出现文件访问错误,可调整宿主机目录权限。

验证操作

  1. 停止并清理现有容器:docker-compose down
  2. 将数据库文件放入C:\Temp\SqlVolume\attach目录
  3. 重新启动容器:docker-compose up -d
  4. 用SSMS连接localhost:14330(SA账号密码为SqlPassw0rd!),查看数据库列表确认是否附加成功。

注意事项

  • 确保已有数据库版本不高于容器使用的SQL Server 2019版本,避免版本兼容问题。
  • sleep 30s的等待时间可根据实际启动速度调整,确保服务完全就绪后再执行附加命令。

内容的提问来源于stack exchange,提问作者bite_Over3ide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:35:50