完全备份(示例将文件写入 /var/opt/mssql/backup,文件名含日期)
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “BACKUP DATABASE [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F).bak’
WITH INIT, SKIP, NAME = ‘YourDB-Full $(date +%F)’”
差异备份(基于最近一次完全备份)
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “BACKUP DATABASE [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F)_diff.bak’
WITH DIFFERENTIAL, INIT, SKIP, NAME = ‘YourDB-Diff $(date +%F)’”
事务日志备份(数据库需为 FULL 或 BULK_LOGGED 恢复模式)
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “BACKUP LOG [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F)_log.trn’
WITH INIT, SKIP, NAME = ‘YourDB-Log $(date +%F)’”
完全恢复:
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “RESTORE DATABASE [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_2025-08-30.bak’ WITH RECOVERY”
使用 NORECOVERY 做分阶段恢复(先完全,再差异/日志):
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “RESTORE DATABASE [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_full.bak’ WITH NORECOVERY”
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “RESTORE DATABASE [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_diff.bak’ WITH NORECOVERY”
sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
-Q “RESTORE LOG [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_log.trn’ WITH RECOVERY”