Ubuntu环境下SQL Server数据库恢复技巧
SSMS是SQL Server官方管理工具,适合习惯图形界面的用户。操作步骤如下:
DBCC CHECKDB命令检查数据完整性。SQLCMD是SQL Server自带的命令行工具,适合脚本化和无人值守恢复。操作步骤如下:
sudo apt-get install mssql-tools安装,登录实例:sqlcmd -S localhost -U SA -P 'YourPassword'。WITH REPLACE用于覆盖现有数据库,WITH RECOVERY将数据库恢复至可用状态:RESTORE DATABASE [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_full.bak'
WITH REPLACE, RECOVERY;
MOVE子句指定新路径,例如:RESTORE DATABASE [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_full.bak'
WITH REPLACE,
MOVE 'YourDatabaseName_Data' TO '/var/opt/mssql/data/NewData.mdf',
MOVE 'YourDatabaseName_Log' TO '/var/opt/mssql/data/NewLog.ldf',
RECOVERY;
QUIT),并通过sqlcmd -S localhost -U SA -P 'YourPassword' -Q "SELECT name FROM sys.databases WHERE name = 'YourDatabaseName'"确认数据库是否存在。若数据库开启了完整恢复模式且有事务日志备份,可实现特定时间点的恢复(如误删除数据)。操作步骤如下:
WITH NORECOVERY选项(保留数据库处于恢复状态,以便应用后续日志):RESTORE DATABASE [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_full.bak'
WITH NORECOVERY;
WITH RECOVERY使数据库可用:RESTORE LOG [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_log1.trn'
WITH NORECOVERY;
RESTORE LOG [YourDatabaseName]
FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_log2.trn'
WITH RECOVERY, STOPAT = '2025-10-06 14:30:00'; -- 指定恢复到的时间点
若没有备份文件,可尝试使用第三方数据恢复工具(如SysTools SQL Recovery、Recovery for SQL Server),但恢复效果取决于数据覆盖情况。以SysTools为例:
RESTORE VERIFYONLY命令验证),避免因备份损坏导致二次损失。WITH REPLACE选项),避免误操作导致现有数据丢失。