温馨提示×

debian备sqlserver如何备

小樊
47
2026-09-07 15:58:48
栏目: 云计算

在 Debian 上“备 SQL Server”,通常指备份 SQL Server 数据库(不是安装)。下面按最常用、最稳妥的方式说明,适用于 Debian + SQL Server 2019/2022。


一、使用 sqlcmd 逻辑备份(推荐)

1. 登录 SQL Server

sqlcmd -S localhost -U sa -P '你的密码'

或指定端口:

sqlcmd -S 127.0.0.1,1433 -U sa -P '密码'

2. 完整备份数据库

BACKUP DATABASE [数据库名]
TO DISK = '/var/opt/mssql/backup/db.bak'
WITH COMPRESSION, INIT;
GO

⚠ 注意:

  • /var/opt/mssql/backup/ 必须存在
  • mssql 用户要有写权限

创建目录示例:

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

3. 备份到本地其他目录(如 /backup)

BACKUP DATABASE [dbname]
TO DISK = '/backup/db.bak'
WITH COMPRESSION;
GO

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

for db in $(sqlcmd -S localhost -U sa -P '密码' -Q "SELECT name FROM sys.databases WHERE database_id > 4" -h -1)
do
  sqlcmd -S localhost -U sa -P '密码' \
  -Q "BACKUP DATABASE [$db] TO DISK='/backup/$db.bak' WITH COMPRESSION"
done

三、差异 / 事务日志备份

差异备份

BACKUP DATABASE [dbname]
TO DISK = '/backup/db_diff.bak'
WITH DIFFERENTIAL;

事务日志备份(数据库必须是 FULL 模式)

BACKUP LOG [dbname]
TO DISK = '/backup/db_log.trn';

四、定时备份(cron)

crontab -e

每天 2 点备份:

0 2 * * * /usr/bin/sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE [dbname] TO DISK='/backup/db.bak' WITH COMPRESSION"

五、恢复示例(备而不忘恢)

RESTORE DATABASE [dbname]
FROM DISK = '/backup/db.bak'
WITH REPLACE;

六、常见问题

1. 权限错误

Operating system error 5

→ 目录权限不对,给 mssql 用户写权限

2. Debian 没装 sqlcmd

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt update
sudo apt install mssql-tools unixodbc-dev

如果你指的是:

  • ✅ 主从复制(Always On / Replication)
  • ✅ 物理文件冷备
  • ✅ Docker 中 SQL Server 备份

告诉我你的场景,我可以给你更精确的方案。

0 踩