3

My exchange box went offline this AM. The logs show

The device, \Device\Harddisk1, has a bad block.

I tried running

chkdsk D: /x /r

but that didn't help either. I went to the Exchange Manager and tried to move the .stm file from D: to C: but got

Exchange System Manager The database files in this store are corrupted.

ID no: c104173b

Exchange System Manager

What else is there to try just to get this online for a few hours until I can get onsite to change the drive.

This is a Windows Server 2003 server.

Saif Khan
  • 1,945
  • 2
  • 20
  • 25

2 Answers2

7

That error code indicates you have some DB corruption somewhere, and are going to need to use eseutil to do some kind of repair on it.

If you need to get up and running right now, your quickest option is to go with empty stores. Your users won't have access to any of their previous email, but they'll be able to function. You can then go and perform an offline recovery and port the older messages back into the new database.

It's been a while since I've done work with eseutil, but if you need help let me know and I can try to point you in the right direction.

Holocryptic
  • 5,665
  • 2
  • 29
  • 37
  • Here are a few of the links I have kept bookmarked for those times when I have to use ESEUTIL: [excellent article on the many uses of ESEUTIL from Telnet 127.0.0.1:25 blog](http://telnetport25.wordpress.com/2008/02/10/when-to-use-eseutils-to-defrag-your-databases-or-when-not-to/), [ESEUTIL /P Quick and Easy (!)](http://exchangeis.com/blogs/exchangeis/archive/2007/03/29/eseutil-p-a-quick-and-easy-tutorial.aspx), and [MSKB 896143](http://support.microsoft.com/kb/896143). – ewall Jul 01 '11 at 15:55
  • I got the DB back online. After many hours, I ran eseutil /mh and found the DB to be in a consistent state so I just deleted all the transaction log files from command prompt and was able to mount the DB. Should I create a new store and move the mailboxes over? – Saif Khan Jul 06 '11 at 05:55
  • Should I just create a new storage group with a new store so that I can put the transaction logs in a new location? – Saif Khan Jul 06 '11 at 05:56
  • That might be the easiest option. If you're recovering from corruption, it's best to create a new store and mailboxes, and then import all the old data from a backup or from the old recovered database. – Holocryptic Jul 06 '11 at 14:07
3

I'm assuming it's a RAID array because it's still working. If you're getting that error now, unfortunately I don't think it will go away when you swap the disk. If the RAID controller can't recreate the block from parity data (I'm assuming that's the cause of the corruption), then it won't be able to write it to your new disk either.

I would consider that database to be suspect and the only way you can really be 100% certain it doesn't have any underlying and unnoticed corruption is to fix the array (probably blow it away and start again), restore from yesterday's backup and roll forward the transaction logs, which are on a totally separate array.... right?

Sorry to be the bearer of bad news. Others might give you some solutions that will get you by for a bit, but personally I wouldn't trust that database now. Holocryptic's solution of eseutil might work, and if it does, again I wouldn't trust a database that has been eseutil'd and would move mailboxes off that store rather quickly if you do get it into a mountable state.

Ben Pilbrow
  • 12,041
  • 5
  • 36
  • 57
  • 3
    Aye, eseutil is only to get the database mounted again to pull the data out. **NEVER** use a repaired database in production! In fact I believe MSFT says that explicitly. – Holocryptic Jul 01 '11 at 15:18