Microsoft KB Archive/225500

From BetaArchive Wiki
Knowledge Base


XCLN: Using CDO to Search the Exchange Global Address List for CdoPR_MHS_COMMON_NAME is Slow

Article ID: 225500

Article Last Modified on 10/26/2006



APPLIES TO

  • Microsoft Exchange Server 5.5 Standard Edition



This article was previously published under Q225500


SYMPTOMS

When using CDO to find entries in a large Exchange Server global address list (GAL) using the property CdoPR_MHS_COMMON_NAME, the operation can take a long time to complete. The CdoPR_MHS_COMMON_NAME property is sometimes referred to as the "alias" or "mailbox" name.

Consider the following Visual Basic code-fragment:
(Assume that the MAPI session is already established, and that NameToSearch contains a string name).

Dim objSession As MAPI.Session
Dim objAddrEntFilt As MAPI.AddressEntryFilter
Dim objAddressEntries As MAPI.AddressEntries
Dim objAddressEntry As MAPI.AddressEntry

Set objAddressEntries = objSession.AddressLists("Global Address List").AddressEntries
    
objAddrEntFilt.Fields.Add (CdoPR_MHS_COMMON_NAME), NameToSearch
        
Set objAddressEntry = objAddressEntries.GetFirst
                

The objAddressEntries.GetFirst method may take a long time to execute based on the size of the global address list.

CAUSE

With respect to the AddressEntryFilter object, the platform SDK currently documents the following:

For fields of data type String, the restriction type is RES_CONTENT with fuzzy level options FL_SUBSTRING, FL_IGNORECASE, and FL_LOOSE. However, the following MAPI properties are compared using FL_PREFIX instead of FL_SUBSTRING:

PR_ACCOUNT
PR_BUSINESS_ADDRESS_CITY
PR_COMPANY_NAME
PR_DEPARTMENT_NAME
PR_DISPLAY_NAME
PR_GIVEN_NAME
PR_OFFICE_LOCATION
PR_SURNAME
PR_TITLE


Because CdoPR_MHS_COMMON_NAME (PR_MHS_COMMON_NAME) is not listed, a search (restriction) using this MAPI property will result in a restriction type of RES_CONTENT with the fuzzy level options FL_SUBSTRING, FL_IGNORECASE, and FL_LOOSE. These fuzzy level options result in an inefficient (wildcard type of) search mechanism, and it is recommended that searches for MAPI properties not using FL_PREFIX be avoided.

RESOLUTION

A modification was made to Cdo.dll to treat PR_MHS_COMMON_NAME as it does PR_ACCOUNT (and the other MAPI properties listed above) which results in an efficient FL_PREFIX search.

To resolve this problem, obtain the latest service pack for Exchange Server version 5.5. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

191014 XGEN: How to Obtain the latest Exchange Server 5.5 Service Pack


The English version of this fix should have the following file attributes or later:

Component: Cdo.dll

File name Version
Cdo.dll 5.5.2580.0



WORKAROUND

Extended MAPI could be used instead of Cdo.dll providing more control for the creation of restrictions.

STATUS

Microsoft has confirmed that this is a problem in Microsoft Exchange Server version 5.5. This problem was first corrected in Exchange Server 5.5 Service Pack 3.

Keywords: kbhotfixserver kbqfe kbbug kbfix kbqfe KB225500