温馨提示×

ubuntu下sqlserver怎样备份

小樊
37
2026-09-18 23:17:07
栏目: 云计算

Ubuntu(Linux)下备份 Microsoft SQL Server(SQL Server on Linux),常用方法有三种:sqlcmd / T-SQL 备份、mssql-tools 脚本备份、以及通过 SQL Agent 定时备份。下面按最常见、最实用的方式说明。


一、使用 sqlcmd 进行数据库备份(推荐)

1. 安装必要工具

如果还没安装 sqlcmd

sudo apt update
sudo apt install mssql-tools unixodbc-dev

加入环境变量(可选):

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

2. 手动备份单个数据库

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

示例:

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

⚠ 注意:

  • 目录必须存在
  • SQL Server 运行用户(mssql)必须有写权限

创建备份目录:

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

3. 备份所有数据库(脚本方式)

sqlcmd -S localhost -U SA -P '密码' \
-Q "SELECT name FROM sys.databases WHERE database_id > 4" \
-h -1 | while read db
do
  sqlcmd -S localhost -U SA -P '密码' \
  -Q "BACKUP DATABASE [$db] TO DISK = '/var/opt/mssql/backup/$db.bak'"
done

二、使用 T-SQL 定时备份(SQL Agent)

1. 启用 SQL Agent

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

2. 创建备份作业(示例)

USE msdb;
GO

EXEC dbo.sp_add_job
    @job_name = N'DailyBackup';

EXEC sp_add_jobstep
    @job_name = N'DailyBackup',
    @step_name = N'BackupDB',
    @subsystem = N'TSQL',
    @command = N'BACKUP DATABASE [TestDB] TO DISK = ''/var/opt/mssql/backup/TestDB.bak''';

EXEC sp_add_schedule
    @schedule_name = N'Daily',
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 020000;

EXEC sp_attach_schedule
    @job_name = N'DailyBackup',
    @schedule_name = N'Daily';

EXEC sp_add_jobserver
    @job_name = N'DailyBackup';

三、使用 cron 定时备份(Linux 方式)

1. 编写备份脚本

/opt/backup_sql.sh

#!/bin/bash
DATE=$(date +%Y%m%d)
sqlcmd -S localhost -U SA -P '密码' \
-Q "BACKUP DATABASE [TestDB] TO DISK = '/var/opt/mssql/backup/TestDB_$DATE.bak'"

赋权:

chmod +x /opt/backup_sql.sh

2. 加入 cron

crontab -e

添加:

0 2 * * * /opt/backup_sql.sh

四、备份文件说明

  • .bak 文件是 SQL Server 原生备份
  • 还原时同样用 RESTORE DATABASE
  • 可配合 gzip 压缩备份文件

五、常见问题

1. 权限错误

sudo chown mssql:mssql /var/opt/mssql/backup

2. 无法连接

sqlcmd -S 127.0.0.1,1433 -U SA

如果你需要:

  • 还原数据库
  • 差异 / 事务日志备份
  • 自动清理旧备份
  • Docker 中的 SQL Server 备份

可以继续告诉我你的使用场景。

0