从可疑数据库中获取数据

从可疑数据库中获取数据

我们遇到了一次停电,我们的一个 SQL 2000 数据库被标记为可疑。我们有一个备份,但它已经超过一天了(停电发生在计划备份之前),我们不想丢失那一天的数据。

有没有办法恢复数据库,然后将丢失的数据从可疑数据库表中复制出来?

答案1

首先我要说的是,一旦数据库被标记为“可疑”,您的处境就会非常糟糕——无论您如何恢复,都很有可能丢失一些数据。

也就是说,您应该能够以紧急模式启动数据库并从那里开始修复过程(checkdb)。 http://gargmanoj.wordpress.com/2008/07/17/how-to-repair-a-sql-server-2005-suspect-database/有更多针对 SQL Server 2005 的细节,但我相信它们在 2000 中也能起作用(下面为后人重现了命令)。

--- Find out why the DB is marked suspect
DBCC CHECKDB (‘YourDBname’) WITH NO_INFOMSGS, ALL_ERRORMSGS

--- Reset the DB to Emergency Mode
EXEC sp_resetstatus ‘yourDBname’;
ALTER DATABASE yourDBname SET EMERGENCY

--- Initial checkdb to get things working
DBCC checkdb(‘yourDBname’)

--- Single-User Mode & "Dangerous" repair (possibility of data loss!)
ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (‘yourDBname’, REPAIR_ALLOW_DATA_LOSS)

--- Make the DB usable again
ALTER DATABASE yourDBname SET MULTI_USER

完成维修后(或者最好在开始维修前),你应该让老板为数据库服务器购买 UPS。当数据丢失的威胁悬在人们头上时,摇动摇钱树往往更容易。

相关内容