by Michael S. Kaplan, published on 2005/03/17 10:38 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2005/03/17/397689.aspx
People are often curious about how this works, and Neil Shipp talks about these things at You Had Me At EHLO... (the Microsoft Exchange team blog). In his post OAB sort orders and character handling he talks about a lot of the configuration setting rules that are behind how Exchange Server does its work, both for online and offline use....
Highly recommended post!
Of course, Exchange Server and Active Directory use the CompareString and LCMapString APIs to do their work. They are in fact the first and primary customer that uses our NLS versioning APIs (GetNLSVersion and IsNLSDefinedString). These APIs make it possible to handle the complex interactions between index building and string comparison when you need to span versions of Windows. As a system whose database can get quite large, a scalable system for accomplishing this task (such as the one I describe in What makes a string meaningful?) can be imperative.
I remember talking with Andrew Goodsell last year about the hoops that they had to jump through prior to Server 2003 adding these APIs and shuddering at the extensive work they were forced to do. And I am glad that we were able to assist them.
Also, it is of note that they are one of the few NLS customers I know of who actually do the kinds of unpacking of sort keys I talked about yesterday in the Reversing sort keys? post, the stuff I just scratched the surface on of ho hard it is to do!). The work they do are simply staggering, and the things they will be doing are even better. Definitely a good group to keep an eye on, the work on the databae engine underneath Exchange Server and Active Directory is one of the reasons that I enjoy being around Microsoft. It's where the smart guys (and girls) are at!
This post brought to you by "ǻ" (U+01fb, a.k.a. LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE)