在 Ubuntu 上备份 SQL Server(Microsoft SQL Server on Linux),常见且推荐的方法有以下几种。下面按最常用 → 进阶给你说明。
sqlcmd + T-SQL 备份(最标准)curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt update
sudo apt install -y mssql-tools unixodbc-dev
加入环境变量(可选):
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
BACKUP DATABASE 备份sqlcmd -S localhost -U sa -P '你的密码' \
-Q "BACKUP DATABASE [数据库名] TO DISK = '/var/opt/mssql/backup/db.bak' WITH COMPRESSION"
✅ 备份文件位置:
/var/opt/mssql/backup/db.bak
⚠️ 注意:
/var/opt/mssql/ 是 SQL Server 的数据目录backup.sh#!/bin/bash
DB="你的数据库名"
DATE=$(date +%Y%m%d)
BACKUP_DIR="/var/opt/mssql/backup"
sqlcmd -S localhost -U sa -P '密码' \
-Q "BACKUP DATABASE [$DB] TO DISK = '$BACKUP_DIR/${DB}_$DATE.bak' WITH COMPRESSION"
赋予执行权限:
chmod +x backup.sh
加入 crontab:
crontab -e
每日凌晨 2 点:
0 2 * * * /path/to/backup.sh
mssql-scripter(结构 + 数据导出)适合 跨平台迁移:
pip install mssql-scripter
导出脚本:
mssql-scripter -S localhost -U sa -P '密码' -d 数据库名 > db.sql
如果你是用 Docker 跑的:
docker exec -u 0 mssql \
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '密码' \
-Q "BACKUP DATABASE [db] TO DISK='/var/opt/mssql/backup/db.bak'"
再拷贝出来:
docker cp mssql:/var/opt/mssql/backup/db.bak ./db.bak
sqlcmd -S localhost -U sa -P '密码' \
-Q "RESTORE DATABASE [db] FROM DISK='/var/opt/mssql/backup/db.bak'"
| 场景 | 推荐方式 |
|---|---|
| 日常备份 | BACKUP DATABASE |
| 自动化 | cron + sqlcmd |
| 跨服务器迁移 | .bak 文件 |
| 结构导出 | mssql-scripter |
如果你愿意,可以告诉我:
我可以给你更精确的方案。