温馨提示×

debian怎么备份sqlserver库

小樊
37
2026-10-13 10:46:55
栏目: 云计算

在 Debian 上备份 SQL Server(Microsoft SQL Server on Linux) 数据库,常见、推荐的做法是使用微软官方提供的命令行工具 sqlcmd 或 bcp,也可以通过 T-SQL 备份命令 生成 .bak 文件。

下面按最常用、最稳妥的方式讲。


一、准备工作(确认环境)

1. 确认 SQL Server 已安装

systemctl status mssql-server

2. 安装 sqlcmd 工具(如果没装)

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

加入环境变量(可选):

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

二、使用 T-SQL 备份数据库(推荐)

1. 登录 SQL Server

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

2. 执行备份命令

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

示例:

BACKUP DATABASE [testdb]
TO DISK = '/var/opt/mssql/backup/testdb.bak'
WITH COMPRESSION, INIT;
GO

⚠️ 注意:

  • /var/opt/mssql/backup/ 目录必须存在,且 mssql 用户有写权限
  • 备份文件是 .bak,只能用 SQL Server 恢复

三、命令行一条命令备份(脚本用)

sqlcmd -S localhost -U sa -P '密码' \
-Q "BACKUP DATABASE [testdb] TO DISK='/var/opt/mssql/backup/testdb.bak' WITH COMPRESSION"

四、自动备份(cron 定时)

1. 写备份脚本

nano /opt/backup_mssql.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' WITH COMPRESSION"

赋权:

chmod +x /opt/backup_mssql.sh

2. 加入 cron

crontab -e

每天凌晨 2 点:

0 2 * * * /opt/backup_mssql.sh

五、导出为 SQL 脚本(不是 .bak)

如果你想要 跨平台 / 可编辑 SQL:

sqlcmd -S localhost -U sa -P '密码' \
-Q "SELECT * FROM 表名" -o data.sql

或者用 bcp 导出数据(适合大表)。


六、恢复数据库(补充)

RESTORE DATABASE [testdb]
FROM DISK = '/var/opt/mssql/backup/testdb.bak'
WITH REPLACE;
GO

七、常见坑

❌ 权限不足
✅ 确保目录属于 mssql:mssql

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

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

  • SQL Server 版本
  • 是否要 全库 / 单表
  • 是否要 异地备份 / 压缩 / 加密

我可以给你定制备份方案。

0 踩