在 Debian 上备份 Microsoft SQL Server,常见做法取决于你是 备份数据库数据(推荐),还是 备份整个 SQL Server 环境。下面按常见场景给你说明。
sqlcmd 备份 SQL Server 数据库(推荐)这是 最标准、最安全 的方式。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/debian/11/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
sqlcmd -S localhost -U sa -P 'YourPassword'
BACKUP DATABASE YourDB
TO DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH COMPRESSION, INIT, STATS = 10;
GO
⚠️ 注意:
/var/opt/mssql/backup/ 目录必须存在mssql 用户要有写权限创建目录示例:
sudo mkdir -p /var/opt/mssql/backup
sudo chown mssql:mssql /var/opt/mssql/backup
sqlcmd -S localhost -U sa -P 'YourPassword' -Q "
SELECT name FROM sys.databases WHERE name NOT IN ('master','model','msdb','tempdb')
" -h -1 | while read db
do
sqlcmd -S localhost -U sa -P 'YourPassword' -Q "
BACKUP DATABASE [$db]
TO DISK = '/var/opt/mssql/backup/${db}.bak'
WITH COMPRESSION, INIT"
done
sudo systemctl stop mssql-server
sudo tar -czvf mssql-data-$(date +%F).tar.gz /var/opt/mssql
sudo systemctl start mssql-server
⚠️ 风险说明:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR=/var/opt/mssql/backup
sqlcmd -S localhost -U sa -P 'YourPassword' -Q "
BACKUP DATABASE YourDB
TO DISK = '${BACKUP_DIR}/YourDB_${DATE}.bak'
WITH COMPRESSION"
加入 cron:
crontab -e
每天凌晨 2 点:
0 2 * * * /path/to/backup.sh
✅ 生产环境推荐
BACKUP DATABASEWITH COMPRESSION).bak 文件❌ 不推荐
/var/opt/mssqlRESTORE DATABASE YourDB
FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH REPLACE;
GO
如果你愿意,可以告诉我:
我可以给你一套 完整可落地的备份方案。