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

ID: Q236956


The information in this article applies to:
  • Microsoft Windows Installer, versions 1.0, 1.1
  • Microsoft Windows 2000


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.


MORE INFORMATION

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 <package> /D on the database.



REFERENCES

See "MsiDatabaseCommit" and "Commit Method" Help file topics in Msi.chm.

Additional query words:

Keywords : kbAppSetup kbWinOS2000bug kbMSI kbDSupport kbGrpDSTools
Version : WINDOWS:1.0,1.1
Platform : WINDOWS
Issue type : kbbug


Last Reviewed: October 21, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.