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

如何通过SSMS将本地MSSQL数据库复制到Laravel Sail Docker容器?

解决Docker容器中SQL Server的数据库迁移问题

你遇到的问题本质是:SSMS的复制数据库向导依赖目标SQL Server服务器上的SSMS配套组件(比如SQL Server Agent、Integration Services),但官方的mcr.microsoft.com/mssql/server镜像只包含核心数据库引擎,没有预装这些工具,所以直接用向导会报错。不过你完全可以通过其他方式实现数据库迁移,以下是几种可靠方案:

方案一:备份+还原(最推荐)

这是SQL Server迁移最通用的方式,步骤如下:

  1. 本地备份数据库:在SSMS中右键本地数据库 → 任务 → 备份,生成.bak备份文件。
  2. 将备份文件传入Docker容器:
    • 先通过docker ps找到你的mssql容器名称(比如sail-mssql-1)
    • 执行命令将备份文件复制到容器的SQL Server数据目录:
      docker cp /本地路径/你的备份文件.bak sail-mssql-1:/var/opt/mssql/data/
      
  3. 在容器中还原数据库:
    • 在SSMS中连接到Docker的SQL Server(tcp:localhost,1432)
    • 先执行以下命令查看备份文件中的逻辑文件名(用于后续还原路径配置):
      RESTORE FILELISTONLY FROM DISK = N'/var/opt/mssql/data/你的备份文件.bak';
      
    • 根据返回的逻辑名,执行还原命令(替换占位符为实际名称):
      RESTORE DATABASE [你的目标库名]
      FROM DISK = N'/var/opt/mssql/data/你的备份文件.bak'
      WITH MOVE '原数据库逻辑文件名' TO N'/var/opt/mssql/data/你的目标库名.mdf',
           MOVE '原数据库日志逻辑文件名' TO N'/var/opt/mssql/data/你的目标库名_log.ldf',
           REPLACE; -- 若目标库已存在,用REPLACE覆盖
      

方案二:生成SQL脚本+执行

适合不需要完整备份、仅迁移结构和部分数据的场景:

  1. 生成迁移脚本:在SSMS中右键本地数据库 → 任务 → 生成脚本
  2. 配置脚本选项:
    • 选择要迁移的对象(整个数据库或指定表)
    • 在“高级”选项中,将编写数据的脚本设置为“True”(需要复制数据时勾选)
    • 确保目标数据库版本选择SQL Server 2022(和你的Docker镜像版本匹配)
  3. 执行脚本:将生成的SQL脚本保存后,在SSMS连接Docker的SQL Server窗口中执行。

方案三:使用bcp命令行工具

适合单表或小批量数据的迁移:

  1. 本地导出数据:在Windows命令行执行(替换占位符):
    bcp 本地库名.dbo.目标表名 out 导出文件名.csv -S localhost -U sa -P 本地数据库密码 -c -t,
    
  2. 将CSV传入容器:
    docker cp 导出文件名.csv sail-mssql-1:/var/opt/mssql/data/
    
  3. 容器中导入数据:
    • 先进入容器的SQL命令行:
      docker exec -it sail-mssql-1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P MyDBP@ssword!1
      
    • 先创建和本地表结构一致的表(可通过SSMS生成表结构脚本执行)
    • 执行导入命令:
      bcp 目标库名.dbo.目标表名 in /var/opt/mssql/data/导出文件名.csv -S localhost -U sa -P MyDBP@ssword!1 -c -t,
      

注意事项

  • 确保Docker中的sa用户拥有dbcreator角色权限,否则无法创建/还原数据库
  • 备份文件放入/var/opt/mssql/data/目录可避免权限问题(该目录是SQL Server容器的默认数据目录)
  • 本地数据库版本不要高于Docker中SQL Server的版本(你用的都是2022,不存在兼容问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:50:17