温馨提示×

debian怎样迁移sqlserver

小樊
36
2026-09-01 16:09:35
栏目: 云计算

Debian 上“迁移 SQL Server”通常有两种常见含义,我分别说明,你可以对号入座:


一、把 SQL Server 从 Windows 迁移到 Debian(Linux)

场景:原来 SQL Server 跑在 Windows,现在要搬到 Debian 上的 SQL Server(Linux 版)

1. 在 Debian 上安装 SQL Server

Microsoft 官方支持:

  • Debian 10 / 11 / 12(部分版本需注意)
# 添加 Microsoft 源
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/debian/11/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server.list

sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

安装 SQL Server 命令行工具:

curl https://packages.microsoft.com/config/debian/11/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
sudo apt update
sudo apt install -y mssql-tools unixodbc-dev

2. 数据迁移方式(推荐顺序)

✅ 方式一:备份还原(最稳妥)

在 Windows 上:

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

拷贝到 Debian 后:

RESTORE DATABASE dbname FROM DISK = '/var/opt/mssql/backup/db.bak'

⚠️ 注意:

  • SQL Server Linux 不支持 Windows 路径
  • 文件权限问题(mssql 用户)

✅ 方式二:使用 sqlpackage / DACPAC

适合 CI/CD、结构+数据迁移


✅ 方式三:SSMS + 导出数据

适合小库、跨版本


二、把 Debian 上的 SQL Server 迁移到另一台 Debian(或重装)

1. 停机迁移(最简单)

systemctl stop mssql-server
cp -r /var/opt/mssql /备份目录

新机器:

systemctl stop mssql-server
cp -r /备份目录/mssql /var/opt/
chown -R mssql:mssql /var/opt/mssql
systemctl start mssql-server

2. 不停机(Always On / 日志传送)

  • SQL Server 2019+ 企业版
  • Debian 支持有限,不推荐新手

三、常见坑(非常重要)

❌ SQL Server Linux 不支持

  • CLR(自定义程序集)
  • 某些 Windows 专用功能

❌ 文件权限问题最常见
✅ 所有数据文件必须属于 mssql:mssql


四、你可以告诉我

我可以给你更精确的方案,只需要:

  1. 是 Windows → Debian,还是 Debian → Debian?
  2. SQL Server 版本(2017 / 2019 / 2022)
  3. 数据库大小
  4. 是否允许停机

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

0