Constraint Violations May Be Logged When You Export to Another Lightweight Directory Access Protocol Server (292251)



The information in this article applies to:

  • Microsoft Metadirectory Services 2.1
  • Microsoft Metadirectory Services 2.2

This article was previously published under Q292251

SYMPTOMS

Constraint violations may be logged when you export to another lightweight Directory Access Protocol (LDAP) server, such as, Netscape Directory Server. For example, the operator log may contain the following message:
Invalid modification response 19 - Constraint Violation for object CN=Username,OU=Test,O=OrgName

CAUSE

This behavior can occur because the characters that are being sent from the Microsoft Metadirectory Services server are not in the Unicode Transmission Format 8 (UTF-8) format, sometimes referred to as "7-bit clean" format, and the most significant binary bit of the character code is set. To the receiving computer, this behavior implies that the characters must be in UTF-8 format (which these characters are not).

Although a Microsoft Metadirectory Services server can correctly receive characters in UTF-8 format, the LDAP interface on the Microsoft Metadirectory Services server cannot transmit the characters in UTF-8 format.

MORE INFORMATION

The UTF-8 format represents characters with codes ranging from 1 to 4 bytes. The first 4 bits of the first byte of the character code is checked to determine how many bytes represent a given character. The number of bytes is determined by two factors:
  • The most significant bit of the first byte is set to a "1" state.
  • The number of bytes is indicated by the number of "1" bits in the first 4 bits received. For example, if the first 2 bits are "1", they indicate a 2-byte character code.
After an LDAP version 3 connection is established between two LDAP servers, any data that contains the high order bit of the character code that has been set to a "1" causes the receiving computer to assume that the data is in the UTF-8 format. If the data is not actually in UTF-8 format, the receiving computer cannot correctly translate the character.

This error most commonly occurs when using characters that contain an umlaut, an accent, or other diacritical marks which are commonly found in many European languages.

For example, the code for a lower case "a" with an umlaut in the Latin-1 character set is a decimal 228, which converts to a binary 11000100. The most significant bit of the 8-bit character code is a "1", which causes the receiving computer to assume that the character is an UTF-8 character, and two of the first 4 bits are set to "1" which indicates that this should be a 2-byte character code if the data had been in UTF-8 format.

The third-party products that are discussed in this article are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

Modification Type:MinorLast Reviewed:1/25/2006
Keywords:kbprb KB292251