Microsoft
Knowledge Base Article - 151789
XADM: Error -1018
(JET_errReadVerifyFailure)
This article was previously published under Q151789
SYMPTOMS
Symptoms include any JET database operation that results
in an -1018
(JET_errReadVerifyFailure) and/or any Windows NT Event Viewer
application log error reported that included the error code
-1018 in its
description, such as the following:
Event ID: 23
Source: EDB
Type: Error
Category: Database Page Cache
Description: MSExchangeIS ((455)) Direct read found corrupted
page
error -1018 ((1:251563) (0-2295758), 251563 379225672
381322824). Please restore the database from a previous
backup.
CAUSE
When you perform a transaction with the Jet database, the
information
store or the directory store writes the transaction to a
transaction log file
(Edb*.log in Mdbdata or Dsadata). The transaction is then
committed to
the Jet database. During this process, the Jet engine calculates
the page's
checksum value to be written, records it in the page header,
and then
requests that the file system writes the 4-KB page of data
to the database
on disk. In brief, the file system takes this call and uses
Windows NT
system services to forward this request to the corresponding
hardware
device driver to actually perform the write. The hardware
device driver
returns this information to the file system, which then
returns it to the Jet
engine. If the call is successful, Jet continues.
Faulty hardware or hardware device drivers may return SUCCESS
to calls
made to them before they actually perform the physical operation.
When
the actual physical operation takes place, however, an error
occurs and
the data is not written successfully as expected.
In certain database operations such as but not limited to
Online Backup,
the backup routine makes a call to the operating system
to read a 4-KB
page of data from the database on disk and write it to tape.
Before
committing the data returned from the operating system call
to the tape,
the online backup process compares the checksum value in
the page
header (recorded when this page was written to disk) to
that being
returned from the READ call. If the checksum values do not
match, the
JET database engine detects this and returns -1018
(JET_errReadVerifyFailure).
RESOLUTION
To resolve the problem, use one of the following methods.
Restore from a Backup
When you encounter the error, the recommended and most reliable
way
to recover the database is to restore from the last known
good backup.
NOTES:
Even after you restore from a known good backup, however,
the -1018
errors may appear again unless the root causes of the physical
data write
problems are resolved.
The Windows NT system log should be reviewed for errors
reported by the
hard disks and hard disk controllers as well at the NT Fault
Tolerant disk
subsystem (FTDISK). In particular, hardware-related errors
such as SCSI
time-out errors, memory errors, or drive corruption errors
may appear.
These errors should be dealt with and resolved before the
database is
restored to this server.
Even if no hardware-related errors appear in the Windows
NT system log,
a hardware problem may exist on your computer.
Microsoft recommended's that you contact your hardware vendor
for
further updates regarding your hardware.
Use Edbutil.exe or Eseutil.exe
An alternate way to repair the bad page of data is to use
Edbutil.exe for
Exchange Server 4.0 and 5.0, or Eseutil.exe for Exchange
Server 5.5.
IMPORTANT: Make a full offline file backup
of the database and log files
before running this process. This includes file-level backups
of the
Exchsrvr\Dsadata and Exchsrvr\Mdbdata folders. This ensures
that there
is a way to go back if Edbutil/eseutil fails.
Edbutil.exe (and Eseutil.exe) is a low-level Jet database
utility that
defragments and checks the consistency of the database.
There is also a
repair option (Edbutil /d /r <dbname>, Eseutil /p
<dbname>) that
attempts to repair bad pages and remove them if the repair
is
unsuccessful. If a page is removed using the repair option,
data loss will
occur. A page in a database can contain messages, folders,
tables, master
indexes, and so forth. There is no way to tell what Edbutil
or Eseutil has
removed because Jet sees it as raw data. After repair has
finished on the
Jet database, run Isinteg.exe in fix mode on the same database
that
Edbutil or Eseutil was run on. Isinteg cleans up any inconsistencies
between the pointers from the information store to the actual
data in the
Jet database. If Isinteg is not run immediately following
repair, corruption
may occur in user mailboxes. Users will have messages that
cannot be
opened, incorrect read/unread counts, and so forth. After
running Edbutil
or Eseutil, make a FULL backup of the database that was
repaired.
Refer to the Microsoft Exchange Server Administrator's Guide
for more
details on the use of Edbutil.exe and Isinteg.exe.
Troubleshoot the Problem
If you are unable to resolve the problem by restoring from
a backup or
using Edbutil.exe or Eseutil.exe, use the following steps
to troubleshoot
the problem. After performing each step, check to see if
the problem is
resolved.
1. Restart the computer. If you do not want to restart the
computer at
this time, stop and restart the information store and directory
services instead. To do so:
a. In Control Panel, double-click Services.
b. Click Microsoft Exchange Directory, and then click Stop.
If a
dialog box appears stating that additional services will
be
stopped, note the services that will be stopped, and then
click
OK. The information store service should be included in
the list
of services that will be stopped.
c. Click Microsoft Exchange Directory, and then click Start.
d. Start any additional services that were stopped in step
b,
including the information store service.
2. Use the Chkdsk.exe utility to verify the integrity of
your hard drives.
3. If the Exchsrvr folder is located on a compressed NTFS
file system
drive, uncompress the drive.
4. If write-back caching is enabled on a SCSI hard disk
controller
installed in your computer, verify that the cache is not
volatile. Nonvolatile
caches are protected by a battery, Flash RAM, or some other
method.
5. Disable any programs that keep files open for an extended
period of
time, such as anti-virus programs, file and disk management
utilities,
or backup programs. If disabling a program prevents the
problem
from occurring, verify that the program is completely compatible
with
Exchange Server before you enable it again.
6. Run Performance Optimizer (Perfwiz.exe) on the server.
7. Verify that the virtual memory settings in Windows NT
Server are
correct. To view the virtual memory settings, in Control
Panel,
double-click System, click the Performance tab, and then
click
Change.
8. If you are running any hard disk utilities obtained from
your original
equipment manufacturer (OEM), verify that you are running
the most
recent version of the programs.
9. Use the Performance Monitor counters associated with
the following
objects to detect potential problems:
l Cache
l Database
l LogicalDisk
l Memory
l MSExchangeIS
l Paging File
l PhysicalDisk
l Process
l Server Work Queues
l Server
l System
l Thread
The information in this article applies to:
l Microsoft Exchange Server 4.0
l Microsoft Exchange Server 5.0
l Microsoft Exchange Server 5.5
Last Reviewed: 9/22/2003 (4.0)
Keywords: kbprb kbusage KB151789
© 2003 Microsoft Corporation. All rights
reserved. Terms of use Security & Privacy Accessibility