温馨提示×

debian中sqlserver怎样迁移

小樊
43
2026-10-16 07:18:32
栏目: 云计算

在 Debian 上迁移 SQL Server(通常指 Microsoft SQL Server on Linux),常见场景有几种,下面按最常见、最稳妥的方式给你讲清楚。


一、迁移方式选择(先看你是哪种)

场景 推荐方式
同版本、同实例结构迁移 备份 / 还原(最推荐)
跨版本 / 跨平台(Win → Linux) 备份还原 或 导出导入
只迁部分表 / 数据 bcp / SSMS 导出
容器 → 物理机 / 虚拟机 挂载数据目录或备份还原

二、最标准方式:备份 + 还原(推荐)

1️⃣ 在源 SQL Server 上备份

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

如果是 Windows:

BACKUP DATABASE dbname TO DISK='C:\backup\dbname.bak'

把 .bak 文件传到 Debian:

scp dbname.bak user@debian:/var/opt/mssql/backup/

2️⃣ Debian 上还原

登录 SQL Server:

sqlcmd -S localhost -U SA

还原数据库:

RESTORE DATABASE dbname
FROM DISK = '/var/opt/mssql/backup/dbname.bak'
WITH MOVE 'dbname' TO '/var/opt/mssql/data/dbname.mdf',
MOVE 'dbname_log' TO '/var/opt/mssql/data/dbname_log.ldf';

✅ 跨平台(Windows → Linux)完全支持


三、使用 Docker 的 SQL Server 迁移

方式 A:直接挂载数据目录(快但危险)

docker run -e ACCEPT_EULA=Y -e SA_PASSWORD='Passw0rd!' \
  -p 1433:1433 \
  -v /mssql/data:/var/opt/mssql \
  mcr.microsoft.com/mssql/server

⚠️ 仅适用于相同版本


方式 B:备份还原(安全)

docker cp dbname.bak mssql_container:/backup/
docker exec -it mssql_container /opt/mssql-tools/bin/sqlcmd ...

四、只迁移数据(无备份)

使用 bcp

导出:

bcp dbname.dbo.table out table.dat -S src -U sa -P pwd -n

导入:

bcp dbname.dbo.table in table.dat -S localhost -U sa -P pwd -n

五、用户 / 登录迁移(容易漏)

迁移后账号会“孤立”:

ALTER USER dbuser WITH LOGIN = dbuser;

批量修复:

EXEC sp_change_users_login 'Auto_Fix', 'dbuser';

六、版本注意事项

源 目标
2017 → 2019 ✅
2019 → 2022 ✅
高版本 → 低版本 ❌ 不支持

七、你现在的场景是?

你可以告诉我:

  • Debian 上是 物理安装 还是 Docker
  • 源是 Windows / Linux / 容器
  • 是 整库迁移 还是 部分表

我可以直接给你一套可执行命令。

0 踩