在Debian上进行SQL Server备份与恢复的完整指南
在Debian上操作SQL Server备份与恢复前,需确保已完成以下基础配置:
mssql-tools包以使用sqlcmd工具(执行sudo apt-get install mssql-tools unixodbc-dev)。sudo systemctl start mssql-server启动服务,并用sudo systemctl status mssql-server确认运行状态。步骤1:登录SQL Server
执行以下命令登录(替换your_password为SA用户密码):
sqlcmd -S localhost -U sa -P your_password
步骤2:执行备份命令
在sqlcmd提示符下,输入备份命令(替换YourDatabaseName为数据库名,/var/opt/mssql/backup/YourDatabaseName.bak为备份路径):
BACKUP DATABASE [YourDatabaseName] 
TO DISK = '/var/opt/mssql/backup/YourDatabaseName.bak' 
WITH FORMAT, MEDIANAME = 'YourDatabaseNameBackup', NAME = 'Full Backup of YourDatabaseName';
FORMAT:格式化备份设备(覆盖现有备份)。MEDIANAME:备份介质名称(可选)。NAME:备份集名称(可选)。步骤3:退出sqlcmd
输入EXIT退出命令行工具。
创建备份脚本(如backup_database.sh):
#!/bin/bash
# 配置参数
SERVER="localhost"
USER="sa"
PASSWORD="your_password"
DATABASE="YourDatabaseName"
BACKUP_PATH="/var/opt/mssql/backup"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_PATH/full_backup_$DATE.bak"
# 创建备份目录(若不存在)
mkdir -p $BACKUP_PATH
# 执行备份
sqlcmd -S $SERVER -U $USER -P $PASSWORD -Q "BACKUP DATABASE [$DATABASE] TO DISK = '$BACKUP_FILE' WITH FORMAT, INIT, STATS = 10"
# 检查备份结果
if [ $? -eq 0 ]; then
    echo "Backup completed successfully: $BACKUP_FILE"
else
    echo "Backup failed!"
fi
赋予执行权限并运行:
chmod +x backup_database.sh
./backup_database.sh
编辑crontab:
crontab -e
添加定时任务(如每天凌晨2点执行备份):
0 2 * * * /path/to/backup_database.sh >> /var/log/sql_backup.log 2>&1
/var/log/sql_backup.log,便于后续检查。步骤1:登录SQL Server
同备份步骤,执行sqlcmd -S localhost -U sa -P your_password。
步骤2:执行恢复命令
在sqlcmd提示符下,输入恢复命令(替换YourDatabaseName为数据库名,/var/opt/mssql/backup/YourDatabaseName.bak为备份路径):
RESTORE DATABASE [YourDatabaseName] 
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName.bak' 
WITH REPLACE, RECOVERY;
REPLACE:覆盖现有数据库(若数据库已存在)。RECOVERY:将数据库恢复至可用状态(适用于完整备份+事务日志备份的最后一步)。步骤3:退出sqlcmd
输入EXIT退出。
WITH NORECOVERY),再恢复差异备份(WITH RECOVERY):RESTORE DATABASE [YourDatabaseName] FROM DISK = '/path/to/full_backup.bak' WITH NORECOVERY;
RESTORE DATABASE [YourDatabaseName] FROM DISK = '/path/to/diff_backup.bak' WITH RECOVERY;
WITH RECOVERY):RESTORE DATABASE [YourDatabaseName] FROM DISK = '/path/to/full_backup.bak' WITH NORECOVERY;
RESTORE LOG [YourDatabaseName] FROM DISK = '/path/to/log1.trn' WITH NORECOVERY;
RESTORE LOG [YourDatabaseName] FROM DISK = '/path/to/log2.trn' WITH RECOVERY;
/var/opt/mssql/backup)对SQL Server服务用户(mssql)可写。RESTORE VERIFYONLY命令)。/var/log/sql_backup.log)。