温馨提示×

ubuntu sqlserver怎么迁移

小樊
36
2026-10-03 20:39:04
栏目: 云计算

在 Ubuntu 上迁移 SQL Server(通常指 Microsoft SQL Server on Linux),常见有几种方式,取决于你是整库迁移、跨服务器迁移、还是升级迁移。下面按最常用场景给你讲清楚。


一、最推荐:使用 bak 备份还原(跨服务器标准做法)

1️⃣ 在源 SQL Server 上备份

BACKUP DATABASE [YourDB]
TO DISK = '/var/opt/mssql/data/YourDB.bak'
WITH COMPRESSION;

如果是 Windows:

BACKUP DATABASE [YourDB]
TO DISK = 'C:\backup\YourDB.bak';

2️⃣ 拷贝备份文件到目标 Ubuntu 服务器

scp YourDB.bak user@ubuntu-ip:/var/opt/mssql/data/

确保权限正确:

sudo chown mssql:mssql /var/opt/mssql/data/YourDB.bak

3️⃣ 在目标 Ubuntu SQL Server 上还原

RESTORE DATABASE [YourDB]
FROM DISK = '/var/opt/mssql/data/YourDB.bak'
WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE 'YourDB_log' TO '/var/opt/mssql/data/YourDB.ldf';

✅ 最稳定、最兼容


二、使用 sqlcmd + 脚本导出(轻量迁移)

适合小库或结构迁移。

导出结构+数据

sqlcmd -S source -U sa -Q "EXEC sp_generate_inserts 'YourDB'" > db.sql

在目标执行

sqlcmd -S localhost -U sa -i db.sql

⚠️ 不适合大表、二进制数据


三、使用 mssql-tools + bcp(大数据表)

导出表数据

bcp YourDB.dbo.Table1 out table1.dat -S source -U sa -n -T

导入

bcp YourDB.dbo.Table1 in table1.dat -S localhost -U sa -n -T

四、Docker → Ubuntu 原生迁移

如果你是从 Docker 迁移:

1️⃣ 停止容器

docker stop mssql

2️⃣ 拷贝数据目录

docker cp mssql:/var/opt/mssql /opt/mssql

3️⃣ 安装 SQL Server 并指向数据目录

sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mssql/data

五、版本升级迁移(如 2019 → 2022)

✅ 直接备份还原即可

  • 低版本 → 高版本 ✅
  • 高版本 → 低版本 ❌

六、迁移后检查

SELECT name, state_desc FROM sys.databases;
DBCC CHECKDB('YourDB');

七、常见问题

❓ 还原报错权限不足

sudo chown -R mssql:mssql /var/opt/mssql/data

❓ Ubuntu 上 SQL Server 服务名

systemctl status mssql-server

如果你能告诉我:

  • ✅ 源系统(Windows / Ubuntu / Docker)
  • ✅ 目标系统
  • ✅ 数据量大小
  • ✅ 是否同版本

我可以直接给你一步到位的具体命令。

0 踩