Vložení a volání uložených procedur se při použití adaptéru BizTalk pro DB2 zpracovávají v obráceném pořadí

Platí pro
Host Integration Server 2013

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.