阅读量:27
Ubuntu上SQL Server数据恢复方法
1. 使用备份文件恢复(最常用且安全)
① 准备备份文件
确保已获取数据库的完整备份文件(.bak格式),并存储在Ubuntu服务器可访问的路径(如/var/opt/mssql/backup/)。若未提前备份,此方法不可用。
② 使用sqlcmd命令行恢复
-
完全恢复(无差异/日志备份):
执行以下命令将备份文件还原到指定数据库(替换路径和数据库名):sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backup/YourDatabaseName_full.bak' WITH REPLACE, RECOVERY"REPLACE:覆盖现有数据库(若存在);RECOVERY:将数据库恢复至可用状态。
-
差异备份恢复(需先恢复完全备份):
先恢复最新的完全备份,再恢复差异备份:# 恢复完全备份(WITH NORECOVERY表示未完成恢复) sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backup/YourDatabaseName_full.bak' WITH NORECOVERY, REPLACE" # 恢复差异备份(WITH RECOVERY表示完成恢复) sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backup/YourDatabaseName_diff.bak' WITH RECOVERY" -
事务日志恢复(需完整恢复模式+日志备份):
若数据库处于完整恢复模式且有事务日志备份,可恢复至特定时间点(如误删除时间):# 恢复完全备份(WITH NORECOVERY) sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backup/YourDatabaseName_full.bak' WITH NORECOVERY, REPLACE" # 恢复所有后续事务日志(WITH NORECOVERY) sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE LOG [YourDatabaseName] FROM DISK='/var/opt/mssql/backup/YourDatabaseName_log1.bak' WITH NORECOVERY" # 恢复至误删除时间点(STOPAT指定时间,如'2025-11-08 10:00:00') sqlcmd -S localhost -U SA -P 'YourPassword' -Q "RESTORE LOG [YourDatabaseName] FROM DISK='/var/opt/mssql/backup/YourDatabaseName_log2.bak' WITH STOPAT='2025-11-08 10:00:00', RECOVERY"
③ 验证恢复结果
恢复完成后,执行以下命令检查数据库完整性:
sqlcmd -S localhost -U SA -P 'YourPassword' -Q "DBCC CHECKDB([YourDatabaseName]) WITH NO_INFOMSGS"
若输出无错误,则恢复成功。
2. 使用SQL Server Management Studio (SSMS)恢复
若习惯图形界面,可通过SSMS恢复(需在Ubuntu上安装SSMS或使用Windows远程连接):
- 连接实例:打开SSMS,输入Ubuntu服务器IP、端口(默认1433)、身份验证方式(SQL Server身份验证)及SA密码,连接至SQL Server实例。
- 启动恢复向导:右键点击“数据库”→“还原数据库”,进入向导。
- 指定备份文件:在“源”选项卡中,选择“设备”→“添加”,浏览至备份文件(.bak)路径。
- 设置恢复选项:在“还原的数据库”选项卡中,输入目标数据库名称(如
YourDatabaseName);在“选项”页签中,勾选“覆盖现有数据库”。 - 执行恢复:点击“确定”,等待恢复完成。
3. 使用第三方工具恢复(无备份时的补充)
若未备份且事务日志不可用,可尝试第三方数据恢复工具(如SysTools SQL Recovery、Recovery for SQL Server、ApexSQL Log):
- 操作步骤:
- 下载并安装工具(需购买正版);
- 运行工具,选择“从损坏/丢失的数据库恢复”或“从备份文件恢复”;
- 指定SQL Server实例信息(服务器地址、身份验证、数据库名);
- 扫描数据库文件(.mdf/.ldf)或备份文件,查找被删除数据;
- 预览并恢复所需数据至新数据库。
- 注意事项:
第三方工具恢复效果取决于数据覆盖情况,无法保证100%恢复;建议优先尝试备份和事务日志恢复。
4. 注意事项
- 定期备份:提前创建完整备份(每周)+ 差异备份(每日)+ 事务日志备份(每小时),避免数据丢失风险;
- 恢复模式:确保数据库处于完整恢复模式(而非简单模式),以支持事务日志恢复;
- 测试恢复:定期测试备份文件的恢复流程,确保备份有效性;
- 权限设置:备份/恢复操作需SA或具有
db_owner角色的用户权限; - 避免覆盖:恢复前确认目标数据库名称和路径,防止误覆盖现有数据。