FIX: SQL Server CE Refresh Fixes GUID Generation Problems (286357)



The information in this article applies to:

  • Microsoft SQL Server 2000 Windows CE Edition

This article was previously published under Q286357

SYMPTOMS

When you insert new rows into replicable tables in a SQL Server CE subscription database, you might get a DB_E_INTEGRITYVIOLATION error (0x80040e2f, as defined in oledberr.h) due to duplicate GUID generation.
This problem is seen most commonly on Microsoft Handheld PC Pro or Palm-size PC devices that are running Windows CE version 2.11 with MIPS processors, but the error may occur on other devices as well.

CAUSE

When the GUID creation code attempts to load a dependent DLL (Winsock.dll), the load fails and an invalid GUID is created.

RESOLUTION

To resolve this problem, download and install the latest version of SQL Server 2000 Windows CE Edition, which is available from the following Microsoft Web site: NOTE: When you install the Development Tools for the refreshed version on a computer that had a previous installation, you will be prompted to uninstall the previous installation before continuing.

For more information, see "Steps to Apply the Fix" in the "More Information" section of this article.

STATUS

Microsoft has confirmed that this is a problem in the initial release of SQL Server 2000 Windows CE edition.

This problem was corrected in the subsequent version of SQL Server 2000 Windows CE Edition.

MORE INFORMATION

INSERT statements that are used against replicable tables on certain devices may fail with an "INTEGRITY VIOLATION" error. This problem is seen most commonly on Handheld PC Pro or Palm-size PC devices that are running Windows CE version 2.11 and have MIPS processors, but may occur on other devices as well.

This error is a result of the GUID creation code not generating a unique identifier for the Rowguid column. Only databases that participate in replication are affected by the error.

NOTE: The problem doesn't always appear, even on a device on which the problem is known to exist. The actual error seems to depend upon the calling sequences that each individual application uses.

Components Updated

Only the .dll files that are packaged in the Development Tools installation (Ssce10.dll and Ssceca10.dll) are affected by the refresh.

The original release of Microsoft SQL Server 2000 Windows CE Edition contains Ssce10.dll and Ssceca10.dll (by default installed in \Program Files\Microsoft SQL Server CE\Device\) build 1.0.2202.0, while the refresh version contains build 1.0.2202.5 of the two files.

The new GUID creation code for SQL Server Windows CE version replication is no longer dependent on the presence of Winsock.dll or a network card.

The Server Tools installation has not been affected by the refresh.

Steps to Apply the Fix

  1. On the development computer, run Setup.exe and select Development Tools in the first dialog box.

    If you are installing on a computer that has a previous installation, you will be prompted to uninstall the previous one before continuing. A dialog box with the following message will appear:
    An incompatible previous version of Microsoft SQL Server 2000 Windows CE Edition has been detected and must be removed ...
    Click yes to remove the previous version.
  2. Setup will prompt you for ADOCE 3.1 Installation. If you already have this installed, click cancel to skip this step.

    NOTE: Removing SQL Server CE in step 2 of these instructions will not have uninstalled ADOCE.
  3. Setup will start the installation wizard for Microsoft SQL Server 2000 Windows CE Edition. Click to accept the license agreement and continue.

Modification Type:MajorLast Reviewed:8/8/2006
Keywords:kbbug kbfix KB286357