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?

[Webinar] Streamline your web hosting managementRegister Today

SurajConnect With a Mentor Commented:
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.

principalitConnect With a Mentor Commented:
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.
Free tool for managing users' photos in Office 365

Easily upload multiple users’ photos to Office 365. Manage them with an intuitive GUI and use handy built-in cropping and resizing options. Link photos with users based on Azure AD attributes. Free tool!

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...
All Courses

From novice to tech pro — start learning today.