温馨提示×

ubuntu下sqlserver怎么备份

小樊
45
2026-09-22 01:02:15
栏目: 云计算

在 Ubuntu(Linux)下备份 Microsoft SQL Server(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/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
sudo apt update
sudo apt install mssql-tools unixodbc-dev

加入环境变量(可选):

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

2️⃣ 创建备份目录

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

3️⃣ 执行数据库备份

sqlcmd -S localhost -U SA -P '你的密码' \
-Q "BACKUP DATABASE [数据库名] TO DISK = '/var/opt/mssql/backup/db.bak'"

✅ 示例:

sqlcmd -S localhost -U SA -P 'Passw0rd!' \
-Q "BACKUP DATABASE [TestDB] TO DISK = '/var/opt/mssql/backup/TestDB.bak'"

4️⃣ 压缩备份(推荐)

BACKUP DATABASE [TestDB]
TO DISK = '/var/opt/mssql/backup/TestDB.bak'
WITH COMPRESSION

二、备份所有数据库(脚本方式)

#!/bin/bash
DBS=$(sqlcmd -S localhost -U SA -P '密码' -Q "SELECT name FROM sys.databases WHERE database_id > 4" -h -1)

for db in $DBS; do
  sqlcmd -S localhost -U SA -P '密码' \
  -Q "BACKUP DATABASE [$db] TO DISK = '/var/opt/mssql/backup/$db.bak' WITH COMPRESSION"
done

三、使用 bcp 导出数据(非备份,适合迁移)

bcp 数据库名.dbo.表名 out /tmp/table.txt -c -T -S localhost

⚠️ 这不是数据库级备份,仅适合表数据。


四、自动备份(cron)

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' WITH COMPRESSION"

五、恢复数据库(补充)

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

✅ 推荐方案总结

场景 方法
生产环境 T-SQL BACKUP + cron
单库迁移 sqlcmd 备份
表级导出 bcp
云 / 跨机 备份文件 + 对象存储

如果你告诉我:

  • SQL Server 版本(2019 / 2022)
  • 是否 Docker 安装
  • 是否需要远程备份

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

0 踩