温馨提示×

ubuntu sqlserver怎样迁移数据

小樊
45
2026-09-28 01:06:36
栏目: 云计算

在 Ubuntu 上迁移 SQL Server 数据,常见有几种方式,取决于你的场景(同机/跨机、版本、数据量、是否停机等)。下面按最常用 → 进阶给你梳理。


一、最推荐:使用 bcp + 脚本(跨服务器通用)

适合:Ubuntu → Ubuntu / Linux / Windows

1️⃣ 导出数据(源服务器)

bcp DatabaseName.dbo.TableName out table.bcp \
  -c -t',' -S localhost -U sa -P 'YourPassword'

2️⃣ 拷贝文件

scp table.bcp user@目标服务器:/data/

3️⃣ 导入数据(目标服务器)

bcp DatabaseName.dbo.TableName in table.bcp \
  -c -t',' -S localhost -U sa -P 'YourPassword'

✅ 优点:稳定、快
❌ 缺点:表结构需提前建好


二、使用 sqlcmd + 脚本(结构 + 数据)

1️⃣ 生成建表脚本

sqlcmd -S localhost -U sa -P 'pwd' \
  -Q "SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.TableName'))"

2️⃣ 导出 INSERT 语句(小数据量)

sqlcmd -S localhost -U sa -P 'pwd' \
  -Q "SELECT * FROM dbo.TableName" -o data.sql

⚠️ 不适合大表


三、备份 / 还原(最像 SQL Server 官方方式)✅

1️⃣ 备份数据库

sqlcmd -S localhost -U sa -P 'pwd' \
  -Q "BACKUP DATABASE TestDB TO DISK='/var/opt/mssql/backup/testdb.bak'"

2️⃣ 拷贝备份文件

scp /var/opt/mssql/backup/testdb.bak user@目标:/var/opt/mssql/backup/

3️⃣ 还原数据库

sqlcmd -S localhost -U sa -P 'pwd' \
  -Q "RESTORE DATABASE TestDB FROM DISK='/var/opt/mssql/backup/testdb.bak' WITH MOVE 'TestDB' TO '/var/opt/mssql/data/TestDB.mdf', MOVE 'TestDB_log' TO '/var/opt/mssql/data/TestDB.ldf'"

✅ 最完整(用户、权限、索引)
✅ 生产环境首选


四、使用 mssql-tools + SSMS(Windows 辅助)

如果你有 Windows + SSMS:

  • 右击数据库 → 任务 → 备份
  • 拷贝 .bak 到 Ubuntu
  • 用 sqlcmd 还原

五、容器 → 宿主机 / 另一台 Ubuntu

如果是 Docker

docker cp sql_container:/var/opt/mssql/backup/db.bak ./db.bak

六、常见问题

❓ Ubuntu 路径权限

sudo chown mssql:mssql /var/opt/mssql/backup

❓ 版本不兼容

  • SQL Server 2019 → 2022 ✅
  • 2022 → 2019 ❌

七、我该用哪种?

场景 推荐
整库迁移 备份/还原
单表 bcp
小数据 sqlcmd
生产 备份还原

如果你愿意,可以告诉我:

  • 是否 Docker
  • 是否 跨版本
  • 数据量大小
  • 是否允许停机

我可以直接给你一步步命令。

0 踩