FIX: FOR XML EXPLICIT: Conflict Attribute in xmltext Is Not Overwritten if xmltext Contains DBCS

This article was previously published under Q290083
This article has been archived. It is offered "as is" and will no longer be updated.
BUG #: 236233 (SHILOH_BUGS)
In an XML EXPLICIT mode, under certain conditions, with the xmltext element defined as double-byte character set (DBCS), a query may not overwrite the conflict attribute and may produce XML that is not well-formed.
To resolve this problem, obtain the latest service pack for SQL Server 2000. For additional information, click the following article number to view the article in theMicrosoft Knowledge Base:
290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack
Microsoft has confirmed that this is a problem in SQL Server 2000. This problem was first corrected in SQL Server 2000 Service Pack 1.
In an XML EXPLICIT mode, under normal conditions, if an attribute that appears in the xmltext element conflicts with an attribute that is retrieved on the same element level, the attribute in xmltext is ignored and overwritten. Under certain conditions with DBCS, however, the conflict attribute is not overwritten, but is instead duplicated. This produces XML that is not well-formed.

To reproduce this behavior, create a table, insert a row, and query the table as follows:
create table T1 (F0 int primary key, F1 TEXT collate Japanese_CI_AS)goinsert into T1 values (111, '<elt1 att0="222" att1="’"><elt2 att2="’" /></elt1>')goselect 1 as TAG, 0 as parent, F1 as [elt1!1!!xmltext], F0 as [elt1!1!att0] from T1 for xml explicit				
The following is returned
-- [INCORRECT RESULT] - att0 is not overwritten.XML_F52E2B61-18A1-11d1-B105-00805F49916B                                                                                                                                                                                                                         ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- <elt1 att0="111" att0="222" att1="’"><elt2 att2="’" /></elt1>				
when the expected result should be as follows:
-- [EXPECTED  RESULT] - att0="222" is overwritten with att0="111"XML_F52E2B61-18A1-11d1-B105-00805F49916B                                                                                                                                                                                                                         ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  <elt1 att0="111" att1="’"><elt2 att2="’" /></elt1>				

Article ID: 290083 - Last Review: 01/16/2015 21:45:09 - Revision: 3.2

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbbug kbfix kbsqlserv2000sp1fix KB290083