温馨提示×

ubuntu如何备份sqlserver库

小樊
46
2026-09-18 23:49:07
栏目: 云计算

在 Ubuntu 上备份 SQL Server(Microsoft SQL Server on Linux) 数据库,常用方法有以下几种,最推荐的是使用官方工具 sqlcmd + BACKUP DATABASE,或者导出为 .bak 文件。


一、使用 sqlcmd 备份(最标准方式)

1. 安装 SQL Server 工具

如果还没安装:

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/20.04/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"

示例:

sqlcmd -S 127.0.0.1,1433 -U sa -P 'Pass@123' \
-Q "BACKUP DATABASE [TestDB] TO DISK='/var/opt/mssql/backup/testdb.bak'"

⚠️ 注意:

  • 备份路径必须是 SQL Server 能访问的目录
  • 默认数据目录:/var/opt/mssql/

3. 自动创建备份目录

sudo mkdir -p /var/opt/mssql/backup
sudo chown mssql:mssql /var/opt/mssql/backup

二、定时备份(crontab)

crontab -e

每天凌晨 2 点备份:

0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE [TestDB] TO DISK='/var/opt/mssql/backup/testdb_$(date +\%F).bak'"

三、使用 bcp 导出数据(不适用整库)

适合只导表:

bcp 数据库名.dbo.表名 out /backup/table.csv -c -t',' -S localhost -U sa -P '密码'

四、使用 Docker 中的 SQL Server

如果是 Docker:

docker exec -it sqlserver \
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '密码' \
-Q "BACKUP DATABASE [DB] TO DISK='/var/opt/mssql/backup/db.bak'"

五、恢复数据库

sqlcmd -S localhost -U sa -P '密码' \
-Q "RESTORE DATABASE [TestDB] FROM DISK='/var/opt/mssql/backup/testdb.bak'"

六、推荐备份策略

  • ✅ 每日全备
  • ✅ 每周差异备份
  • ✅ 重要库开启事务日志备份

如果你告诉我:

  • SQL Server 版本
  • 是否在 Docker
  • 是否需要远程备份

我可以给你一套完整脚本。

0