Wednesday, August 12, 2009

Recover corrupted Database in SQL Server 2000

Recover from a corrupted Database in SQL Server 2000

This is a useful article or not I don’t know, but when your database is corrupted then this article helps you a lot.

Make sure that the database being restored is from the same Product level as the server you are restoring to. I once faced an issue when trying to restore a database from an SP4 to a non-SP4 database server.

1. Detach the corrupted MDF from Enterprise Manager.

2. Save the corrupted MDF to a safe location.

3. Now create a new database with the same name (the location must be the same as the ‘corrupted MDF and LDF’)

4. Stop the SQL Server service.

5. Now replace this MDF and LDF (New database) with the ‘corrupted MDF and LDF’

6. Start SQL Server service.

7. Launch Enterprise Manager. Now you should be able to see the database in suspect mode.

8. Launch Query Analyzer and select the master database. Issue the following commands in this order:

Order 1:
sp_configure ‘allow updates’, 1
go

Order 2:
reconfigure with override
go

9. You can now make changes to the system catalog tables.

10. Now to check the status of our database. Issue the following command
select status from sysdatabases where name’ your databae name’ (replace with your database name)
NOTE: remember the status code

11. Now execute the following command:
update sysdatabases
set status=32768 where name=’your database name’

12. Next restart SQL Server Service.

13. You will now be in Emergency Mode.

14. Now create a destination recovery database, called dbrecover and try to push data from the corrupt database to the new dbrecover database using DTS.

15. Now issue the following undocumented command:
DBCC rebuild_log(‘your database name’, ‘new log filename with path’)
àDBCC rebuild_log ('neptune', 'D:\MSSQL2000\MSSQL\Data\test_log.ldf')

16. After this successful execution, you will need to get into your database, so issue the following commands:

Step 1:
Use master
go

sp_dboption ‘your database name’, ‘single_user’, ‘true’
go

Step 2:
Use master
go

DBCC CHECKDB(‘your database name’, REPAIR_ALLOW_DATA_LOSS)
go

17. Finally set your database back to a normal status by issuing the following command:
Step 1:
Use master
go

update sysdatabase
set status=0 where name=’your database name’
go

18. Now you can see that your database is back online.

19. As a precautionary measure, please disable updates the sysem catalogs immediately by issuing the following command:
Step 1:
Use master
go

sp_configure ‘allow update’, 0
go

Step 2:
Use master
go

Reconfigure with override
go


This is how one recovers a corrupted mdf database and brings it back online.