在日常工作中,数据库管理员可能会遇到SQL Server数据库进入可疑模式的情况。这种情况通常由于硬件故障或操作失误(例如删除事务日志文件)导致。本文将介绍如何从可疑模式中恢复数据库,并通过SQL Server错误日志查找错误的根本原因。
在启动时,SQL Server会尝试对设备文件获得一个独占锁。如果设备被其他进程使用,或者文件丢失,SQL Server就会开始显示错误。在这些情况下,设备和数据库通常没有问题。为了正确恢复数据库,必须使设备可用,并且必须重置数据库状态。
SQL Server数据库变为可疑模式的可能原因包括:
要解决这个问题,请运行以下命令:
EXEC sp_resetstatus 'DATABASE_NAME';
ALTER DATABASE DATABASE_NAME SET EMERGENCY;
DBCC checkdb('DATABASE_NAME')
ALTER DATABASE DATABASE_NAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CheckDB ('DATABASE_NAME', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE DATABASE_NAME SET MULTI_USER;
上述命令执行了一系列步骤,以检查数据库的逻辑和物理一致性,并尝试修复。第一步是使用系统存储过程sp_resetstatus
关闭数据库的可疑标志。使用此过程,将可疑标志更改为紧急状态。一旦数据库设置为紧急模式,它就变成只读副本,只有sysadmin
固定服务器角色的成员才有权限访问它。然后,执行DBCC命令对主数据库进行一致性检查。下一步是回滚数据库中的任何事务,并将数据库带入单用户模式。运行修复,最后将数据库带入多用户模式。
请记住,只有系统管理员才能执行sp_resetstatus
。执行此过程后,请立即关闭SQL Server。如果执行这些步骤后数据库仍然被标记为可疑,可能存在其他问题阻止数据库恢复。在这一点上,唯一的选择要么是从良好的备份中恢复,要么是将数据库设置为紧急模式,并使用批量复制程序将数据复制出来。
sp_resetstatus
之前,请确保SQL Server已关闭。