如何在GitHub Codespaces容器中恢复SQL Server备份
GitHub Codespaces 中SQL Server容器数据库恢复方案
以下是三种可直接落地的操作方案:
方案1:沿用本地操作逻辑,直接在Codespaces终端执行docker cp
Codespaces的内置终端默认拥有容器操作权限,操作逻辑和本地DevContainer完全一致:
- 终端执行
docker ps,找到SQL Server服务对应的容器ID/名称,你配置里服务名为db,容器名通常为devcontainer_db_1格式 - 把
.bak备份文件直接拖拽到Codespaces左侧文件管理器的工作目录,完成上传 - 可选:如果容器内没有备份目录,先执行创建命令:
docker exec -it <替换为你的容器ID/名称> mkdir -p /var/opt/mssql/backup - 把备份文件复制到容器内:
docker cp ./替换为你的备份文件名.bak <替换为你的容器ID/名称>:/var/opt/mssql/backup/ - 用
sqlcmd或者VS Code SQL Server扩展连接数据库执行恢复脚本即可,默认连接信息:- 地址:
localhost,1433 - 用户名:
sa - 密码:为你
docker-compose.yml中MSSQL_SA_PASSWORD环境变量配置的值(如果未配置需要先补充该配置,否则SQL Server无法正常启动)
- 地址:
方案2:挂载备份目录,省去每次复制文件的步骤
修改你的/.devcontainer/docker-compose.yml的db服务配置,添加卷映射,直接把工作区的备份目录挂载到SQL容器内:
# ... other containers configururation db: image: mcr.microsoft.com/mssql/server:2019-latest restart: unless-stopped environment: ACCEPT_EULA: Y MSSQL_SA_PASSWORD: "YourStrong!Passw0rd" # 需符合SQL Server强密码要求:8位以上,包含大小写、数字、特殊字符 volumes: - ./mssql-backup:/var/opt/mssql/backup # 新增这行,把工作区的mssql-backup目录挂载到容器内备份目录
修改配置后重建Codespaces实例,后续只需把备份文件上传到工作区的mssql-backup目录,即可直接在SQL Server中读取到备份文件执行恢复。
方案3:用VS Code扩展可视化操作
- 在Codespaces的扩展市场安装SQL Server (mssql) 扩展
- 扩展面板中添加连接,输入上述连接信息连接到你的SQL Server实例
- 右键目标实例下的「数据库」选项,选择「还原」,按照引导选择备份文件路径执行恢复即可,如果已经做了目录挂载,可直接选择工作区的备份文件。
内容的提问来源于stack exchange,提问作者Lev
相关产品推荐
相关产品推荐

