在 Ubuntu 上迁移 SQL Server(通常指 Microsoft SQL Server on Linux),常见有几种方式,取决于你是整库迁移、跨服务器迁移、还是升级迁移。下面按最常用场景给你讲清楚。
bak 备份还原(跨服务器标准做法)BACKUP DATABASE [YourDB]
TO DISK = '/var/opt/mssql/data/YourDB.bak'
WITH COMPRESSION;
如果是 Windows:
BACKUP DATABASE [YourDB]
TO DISK = 'C:\backup\YourDB.bak';
scp YourDB.bak user@ubuntu-ip:/var/opt/mssql/data/
确保权限正确:
sudo chown mssql:mssql /var/opt/mssql/data/YourDB.bak
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 迁移:
docker stop mssql
docker cp mssql:/var/opt/mssql /opt/mssql
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /opt/mssql/data
✅ 直接备份还原即可
SELECT name, state_desc FROM sys.databases;
DBCC CHECKDB('YourDB');
sudo chown -R mssql:mssql /var/opt/mssql/data
systemctl status mssql-server
如果你能告诉我:
我可以直接给你一步到位的具体命令。