温馨提示×

ubuntu怎么备份sqlserver

小樊
43
2026-09-09 20:11:01
栏目: 云计算

在 Ubuntu 上备份 SQL Server(Microsoft SQL Server on Linux),常见且推荐的方法有以下几种。下面按最常用 → 进阶给你说明。


一、使用 sqlcmd + T-SQL 备份(最标准)

1️⃣ 安装 sqlcmd(如果还没装)

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

2️⃣ 使用 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 的数据目录
  • 目录必须存在且 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 中的 SQL Server 备份

如果你是用 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

如果你愿意,可以告诉我:

  • SQL Server 版本
  • 是否 Docker
  • 是否要增量 / 异地备份

我可以给你更精确的方案。

0