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

Linux(Debian11)Docker容器中SQL Server数据库备份问题求助

解决Docker中SQL Server数据库备份的路径与权限问题

问题1:相对路径创建备份后找不到文件

用backup DATABASE testDB to disk='./test.bak'执行成功但找不到文件,核心原因是容器文件系统与宿主机完全隔离,这里的./指向SQL Server在容器内的默认工作目录/var/opt/mssql,备份文件实际存放在容器内的/var/opt/mssql/test.bak路径下。

查看与导出容器内的备份文件

  • 查看容器内的备份文件:
    docker exec <你的SQL Server容器ID/名称> ls /var/opt/mssql
    
  • 将容器内的备份文件复制到宿主机指定目录:
    docker cp <容器ID/名称>:/var/opt/mssql/test.bak /home/brutal/backups/
    

问题2:指定宿主机路径提示权限拒绝

直接使用宿主机路径/home/brutal/backups/test.bak会触发权限错误,因为容器默认无法直接访问宿主机目录,且宿主机的mssql用户组与容器内的mssql用户(固定UID为10001)无权限映射。正确方案是通过目录挂载让容器合法访问宿主机目录:

解决步骤

  1. 停止运行中的SQL Server容器:
    docker stop <容器ID/名称>
    
  2. 重新启动容器,将宿主机的/home/brutal/backups目录挂载到容器内的/var/opt/mssql/backups(容器内路径可自定义):
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=你的SA密码" \
    -v /home/brutal/backups:/var/opt/mssql/backups \
    -p 1433:1433 --name sqlserver -d mcr.microsoft.com/mssql/server:2022-latest
    
    注意:替换命令中的SA密码、容器名称、SQL Server镜像版本为你实际使用的参数。
  3. 在宿主机给挂载目录设置容器内mssql用户对应的UID权限:
    chown -R 10001:10001 /home/brutal/backups/
    
  4. 执行备份命令时使用容器内的挂载路径:
    backup DATABASE testDB to disk='/var/opt/mssql/backups/test.bak'
    
    此时备份文件会直接生成在宿主机的/home/brutal/backups/目录下,且无权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:06:04