ESEUTIL Error -1022 Jet error IO error

I have Exchange Standard 2003 with service pack 2 running on Windows Server 2003 standard edition, fully updated.  I use Symantec Backup Exec 12 for backup and restore.  I run a nightly backup of the Exchange stores, mail and public.  These are full backups. I want to run an offline defrag of my mail store to reclaim 11 gigs worth of space.  I am want to do a practice run to see how long it would take and what the results would be.

I do a VSS restore of my nightly backup to a temporary directory on my exchange server.  I try to run the ESEUTIL /R command but I get an error saying the DB is in a dirty shutdown state.  So I try to run the ESEUTIL /r E00 /D "path to my DB" and get the error:
Operation terminated with error -1022 (JET_errDiskIO, Disk IO error) after 1.0 seconds.

The restored DB is on a local SCSI drive on the exchange server.  When I run the restore I have BackUP exec commit the transaction logs to the DB but not mount it.  

I have also tried this with anti-virus off.  

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

After restoring the VSS backup you need to ran eseutil /r e00 /d "path to db" /l "path to restore log" /s "path to restored chk file".
Once you are done with this run eseutil /mh "database absolute path with database name" to check if it is in a clean shutdown state.
eseutil /d could only be run on the clean shutdown database. This is the reason you are getting an error message.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Tread carefully as the tools you are using are designed live action and not to test databases.

You would want to use hard recovery mode: eseutil /C

Repairing databases involves the following three stages, in this order:
Eseutil is run in /P mode to perform a database page-level and table-level repair
Eseutil is run in /D mode to fully rebuild indexes and defragment the database
ISInteg is then run to repair the database at the application level

Good luck
kristopherbunchAuthor Commented:
I tried running what you said but I get an error:

D:\Program Files\Exchsrvr\TestOfflineDefrag>eseutil /R E00 /D"D:\Program Files\E
xchsrvr\TestOfflineDefrag\" /S"d:\Program Files\Exchsrvr\TestOfflineDefrag\"

Usage Error: Invalid argument 'Files\Exchsrvr\TestOfflineDefrag"'. Options must
be preceded by '-' or '/'.

Principalit I will try yours after I try X-sam's.
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

eseutil /R E00 /D "D:\Program Files\Exchsrvr\TestOfflineDefrag\" /S "d:\Program Files\Exchsrvr\TestOfflineDefrag\" /l "d:\Program Files\Exchsrvr\TestOfflineDefrag\"

Run this and you should not be getting any error now. You were missing space after /s /d /l.

kristopherbunchAuthor Commented:
Ok I just noticed this.  This is the origional command I was trying:

D:\Program Files\Exchsrvr\TestOfflineDefrag>eseutil /R E00 /D"D:\Program Files\E

Microsoft(R) Exchange Server Database Utilities
Version 6.5
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating RECOVERY mode...
    Logfile base name: E00
            Log files: <current directory>
         System files: <current directory>
   Database Directory: D:\Program Files\Exchsrvr\TestOfflineDefrag"

Performing soft recovery...

Operation terminated with error -1022 (JET_errDiskIO, Disk IO error) after 1.0 s

The .chk is in that directory.  I am running Eseutil from the directory with the logs, .chk and log files.  
kristopherbunchAuthor Commented:
I ran the one you provided and I still got that error about invalid argument.  
Please try this:

1. Create a folder named ESEUTIL-TESTS
2. Copy the database files, and all logs files into ESEUTIL-TESTS
3. Copy the ESEutil files into the ESEUTIL-TESTS folder:  ( Eseutil.exe, Ese.dll, Jcb.dll, Exosal.dll, and Exchmem.dll)
4. Once you have the database files, logs, and the eseutil files in the same directory (ESEUTIL-TESTS), open a command prompt and switch to the "ESEUTIL-TESTS" folder.
5. Run:   "eseutil /r /E00"   (and nothing else)

See if it works with everything in the same directory...
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.