Microsoft KB Archive/236956

{|
 * width="100%"|

BUG: Database String Pool Corrupted if Commit Method is Not Used

 * }

Q236956

-

The information in this article applies to:


 * Microsoft Windows Installer, versions 1.0, 1.1
 * Microsoft Windows 2000 Advanced Server
 * Microsoft Windows 2000 Server
 * Microsoft Windows 2000 Professional

-

SYMPTOMS
The .msi database string pool becomes corrupt if no Commit method is used after editing the database in direct mode. This behavior may appear as unexplained SQL query results or failures. Use the MsiInfo utility to check the string pool (option /D). If corruption exists, you the following error appears:

Error 1620. String pool reference counts are incorrect.

CAUSE
When editing a database in transactional editing mode, any changes not committed before closing the database are rolled back. However, in direct editing mode changes are made immediately. The current database editing process uses some file write buffering, which requires that a Commit method take place in order to flush all buffers and write all changes to disk.

RESOLUTION
A user must always call the Commit method after attempting to change a database.

STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

Steps to Reproduce Behavior

 * 1) Open an existing database in direct mode.
 * 2) Insert a row into a table, making sure that the table data contains a string that's not already in the string pool.
 * 3) Do not use the Commit method on the database.
 * 4) Run MsiInfo /D on the database.