CentOS环境下SQL Server数据库恢复方法
在进行数据库恢复前,需完成以下关键步骤:
sudo systemctl stop mssql-server
。/var/opt/mssql/data/
)或其他可访问目录。SQL Server Management Studio(SSMS)是微软提供的图形化管理工具,适用于习惯可视化操作的场景:
YourDatabaseName
);T-SQL是SQL Server的原生命令行工具,适用于自动化恢复或复杂场景:
sudo systemctl stop mssql-server
。sudo /opt/mssql/bin/sqlservr -m
(该命令会阻塞其他连接,恢复完成后需手动停止并重启服务)。sqlcmd
工具连接SQL Server(默认SA账户),执行以下命令:RESTORE DATABASE [YourDatabaseName]
FROM DISK '/var/opt/mssql/data/YourDatabaseName.bak'
WITH REPLACE, RECOVERY;
[YourDatabaseName]
:目标数据库名称;/var/opt/mssql/data/YourDatabaseName.bak
:备份文件路径;WITH REPLACE
:覆盖现有数据库;WITH RECOVERY
:恢复后数据库可用(若需应用后续日志,可改为WITH NORECOVERY
)。sudo systemctl start mssql-server
重启服务。mssql-tools是微软提供的轻量级命令行工具,适用于脚本化恢复:
sudo yum install -y mssql-tools
。sqlcmd
连接SQL Server,执行与T-SQL相同的恢复命令(见上文),或通过脚本自动化执行。若需将数据库恢复到某一特定时间点(如误删除数据前的时刻),需结合完整备份+事务日志备份进行:
RESTORE DATABASE
命令恢复最新的完整备份,添加WITH NORECOVERY
(不恢复数据库,保留日志链)。WITH NORECOVERY
,直到目标时间点前的最后一个日志备份。WITH RECOVERY, STOPAT='YYYY-MM-DD HH:MI:SS'
(指定目标时间点),完成恢复。恢复完成后,需进行以下操作确保数据完整性:
sqlcmd
执行SELECT name, state_desc FROM sys.databases WHERE name = 'YourDatabaseName';
,确认状态为“ONLINE”。DBCC CHECKDB('YourDatabaseName') WITH NO_INFOMSGS;
,检查数据库是否有损坏。