Příznaky
Když zadáte více dotazů SQL nebo volání uložených procedur v jednom <bloku synchronizace> na serveru Host Integration Server 2013, budou volání zpracována v opačném pořadí, než očekáváte. Například následující ukázka kódu XML obsahuje více volání uložené procedury v jednom <bloku synchronizace> :
<synchronizace>
<Uložená procedura>
<SP_CHAR_INOUT INOUTVAL1 ="ABCDEFGHIJ" />
</StoredProcedure>
<Uložená procedura>
<SP_CHAR_INOUT INOUTVAL1 ="BCDEFGHIJK"/>
</StoredProcedure>
<Uložená procedura>
<SP_CHAR_INOUT INOUTVAL1 ="CDEFGHIJKL" />
</StoredProcedure>
</sync>
V tomto příkladu je poslední volání uložené procedury <v bloku synchronizace> první, které je spuštěno.
Příčina
BizTalk Adapter pro DB2 ukládá záznamy do <synchronizačního> bloku v zásobníku, který se spouští v obráceném pořadí. Toto chování je součástí adaptéru BizTalk pro DB2 už od verze Host Integration Server 2006.
Řešení
Informace o kumulativní aktualizaci
Oprava, která řeší tento problém, je součástí kumulativní aktualizace 2 pro Host Integration Server 2013.
Alternativní řešení
Pokud chcete spouštět dotazy SQL nebo volání uložených procedur v uvedeném pořadí, vložte každý dotaz nebo volání uložené procedury do vlastního <bloku synchronizace> , jako v následujícím příkladu:
<synchronizace>
<Uložená procedura>
<SP_CHAR_INOUT INOUTVAL1 ="ABCDEFGHIJ" />
</StoredProcedure>
</sync>
<synchronizace>
<Uložená procedura>
<SP_CHAR_INOUT INOUTVAL1 ="BCDEFGHIJK"/>
</StoredProcedure>
</sync>
<synchronizace>
<Uložená procedura>
<SP_CHAR_INOUT INOUTVAL1 ="CDEFGHIJKL" />
</StoredProcedure>
</sync>
Poznámka: Pokud vložíte každý dotaz nebo volání uložené procedury do vlastního <bloku synchronizace> a jeden z dotazů nebo volání uložené procedury z jakéhokoli důvodu selže, obdržíte neúplné aktualizace v databázi DB2, protože každý příkaz je zpracován ve své vlastní transakci.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
Další informace
Po instalaci této aktualizace BizTalk Adapter pro DB2 zpracuje každý dotaz SQL a volání uložené procedury, které jsou obsaženy v <bloku synchronizace> , v pořadí, ve kterém jsou uvedeny v doprovodném souboru XML.