This post was originally published here.
Now the question is: will BizTalk treat these schemas as identical schemas or not? My first guess was that BizTalk would treat these schemas as unique because it’s related to XML, which is case-sensitive. However, when processing one of the two messages, the XML Disassembler threw an error because multiple schemas matched the message type.
I investigated how BizTalk resolved the schema, so I turned on SQL Server Profiler. There, I discovered this entry:
exec bt_GetDocSpecInfoByMsgType @nvcMsgtype= N'http://Codit.BizTalk.Blog.REQUEST#REQUEST',@iPipelineAssemblyId=2,@iFlag=@p3
The most important query of the GetDocSpecInfoByMsgType stored procedure is this one:
Because my SQL Server Collation, Latin1_General_CI_AS, is case-insensitive, the query results into 2 matched schemas, so the XML Disassembler will throw an exception.
After some searching on MSDN I’ve found this remark:
“If you will be using two namespaces that vary only by case, the BizTalk database must be installed with a case-sensitive collation. Examples of case-sensitive collations include binary and non-binary collations with case-sensitivity enabled. If this is not done, schema resolution will fail because XML is case-sensitive.”
Conclusion
Is the BTS.MessageType case-sensitive or case-insensitive?
It depends on your SQL Server Collation.