Ubuntu SQL Server如何进行数据恢复
导读:Ubuntu环境下SQL Server数据恢复的常见方法及操作步骤 一、使用sqlcmd命令行工具恢复(推荐:无需图形界面,灵活高效) sqlcmd是SQL Server自带的命令行工具,适用于Ubuntu服务器环境,支持通过T-SQL命令...
Ubuntu环境下SQL Server数据恢复的常见方法及操作步骤
一、使用sqlcmd命令行工具恢复(推荐:无需图形界面,灵活高效)
sqlcmd是SQL Server自带的命令行工具,适用于Ubuntu服务器环境,支持通过T-SQL命令完成数据库恢复。
1. 准备工作
- 确保SQL Server已安装并运行(可通过
systemctl status mssql-server
验证); - 安装sqlcmd工具(若未安装,执行
sudo apt-get update & & sudo apt-get install mssql-tools
); - 将备份文件(.bak格式)上传至Ubuntu服务器(如
/var/opt/mssql/backups/
目录),并确认目录权限正确(sudo chown mssql:mssql /var/opt/mssql/backups/
)。
2. 完整备份恢复(无增量/日志时)
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backups/YourDatabaseName_full.bak' WITH REPLACE, RECOVERY"
REPLACE
:覆盖现有同名数据库;RECOVERY
:将数据库恢复至可用状态(若需应用后续增量/日志,改为NORECOVERY
)。
3. 增量备份恢复(配合完整备份使用)
需先恢复最近的完整备份,再依次恢复增量备份:
# 恢复完整备份(NORECOVERY表示未完成恢复)
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backups/YourDatabaseName_full.bak' WITH NORECOVERY"
# 恢复增量备份(如2025-09-23的增量备份)
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backups/YourDatabaseName_diff_20250923.bak' WITH RECOVERY"
4. 事务日志恢复(完整恢复模式下,实现精确到某时间点的恢复)
需先恢复完整备份和所有增量备份,最后恢复事务日志:
# 恢复完整备份(NORECOVERY)
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] FROM DISK='/var/opt/mssql/backups/YourDatabaseName_full.bak' WITH NORECOVERY"
# 恢复事务日志(如2025-09-23的日志备份)
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE LOG [YourDatabaseName] FROM DISK='/var/opt/mssql/backups/YourDatabaseName_log_20250923.bak' WITH STOPAT='2025-09-23 18:00:00', RECOVERY"
STOPAT
:指定恢复到的具体时间点(如误删除数据的时间),需开启SQL Server的完整恢复模式(ALTER DATABASE [YourDatabaseName] SET RECOVERY FULL
)。
5. 验证恢复结果
恢复完成后,检查数据库完整性并测试数据:
# 检查数据库物理结构完整性
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "DBCC CHECKDB([YourDatabaseName]) WITH NO_INFOMSGS"
# 查询表数据(示例:查询dbo.Users表的前10条记录)
sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "USE [YourDatabaseName];
SELECT TOP 10 * FROM dbo.Users;
"
二、使用SQL Server Management Studio (SSMS)恢复(图形界面,适合新手)
若习惯图形操作,可通过SSMS连接Ubuntu上的SQL Server实例进行恢复:
1. 安装SSMS
在Windows电脑上下载并安装SSMS(Microsoft官方提供),通过SSH隧道或直接连接Ubuntu服务器的SQL Server实例(默认端口1433)。
2. 恢复步骤
- 打开SSMS,输入连接信息(服务器地址:
localhost
或Ubuntu服务器IP;身份验证:SQL Server身份验证;用户名:sa
;密码:设置的密码),点击“连接”; - 右键点击“数据库”节点,选择“还原数据库”;
- 在“源”选项卡中,选择“设备”,点击“浏览”添加备份文件(.bak);
- 切换至“常规”选项卡,在“目标数据库”输入框中输入恢复后的数据库名称;
- 在“选项”页签中,勾选“覆盖现有数据库(WITH REPLACE)”,并根据需要选择“恢复状态”(如“还原后保持数据库不可用”或“还原后使数据库可用”);
- 点击“确定”,等待恢复完成。
三、使用第三方工具恢复(无备份时的补救措施)
若未备份或备份损坏,可尝试使用第三方数据恢复工具(如SysTools SQL Recovery、Recovery for SQL Server),但恢复效果取决于数据覆盖情况。
1. SysTools SQL Recovery操作步骤
- 下载并安装工具(需购买正版);
- 启动工具,选择“Recover Database from SQL Server Backup”模式;
- 添加备份文件(.bak)路径;
- 选择要恢复的数据库对象(表、视图、存储过程等);
- 点击“Recover”开始恢复,保存恢复后的文件(如.csv、.sql);
- 将恢复的文件导入SQL Server(可通过SSMS的“导入数据”功能)。
2. 注意事项
- 第三方工具无法保证100%恢复数据,尤其是备份文件已损坏或被覆盖的情况;
- 恢复前尽量停止SQL Server服务,避免新数据覆盖旧数据;
- 若数据极其重要,建议联系专业数据恢复服务商。
四、恢复前的准备工作与注意事项
- 备份优先:恢复操作前,务必对现有数据库进行完整备份(
BACKUP DATABASE [YourDatabaseName] TO DISK='/var/opt/mssql/backups/YourDatabaseName_current.bak' WITH INIT
),防止恢复过程中出现意外; - 恢复模式:确保数据库处于正确的恢复模式(完整恢复模式支持事务日志恢复,简单恢复模式不支持);
- 权限检查:执行恢复操作的用户需具备
sysadmin
或dbcreator
角色权限; - 测试环境:正式恢复前,建议在测试环境中验证备份文件的可用性和恢复流程的正确性;
- 停机时间:恢复操作可能影响数据库可用性,建议在业务低峰时段进行。
通过以上方法,可根据数据丢失场景选择合适的恢复方式。若恢复失败,建议检查备份文件的完整性(如使用RESTORE VERIFYONLY
命令),或联系Microsoft技术支持获取帮助。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu SQL Server如何进行数据恢复
本文地址: https://pptw.com/jishu/716125.html