Gli inserimenti e le chiamate di stored procedure vengono elaborati in ordine inverso quando si utilizza BizTalk Adapter per DB2

Si applica a
Host Integration Server 2013

Sintomi

Quando si emettono più query SQL o chiamate a stored procedure in un singolo <blocco di sincronizzazione> in Host Integration Server 2013, le chiamate vengono elaborate in ordine inverso rispetto a quello previsto. Ad esempio, l'esempio di codice XML seguente include più chiamate a stored procedure in un singolo <blocco di sincronizzazione> :

<Sincronizzazione>
        <Storedprocedure>
             <SP_CHAR_INOUT INOUTVAL1 ="ABCDEFGHIJ" />
        </Storedprocedure>
        <Storedprocedure>
             <SP_CHAR_INOUT INOUTVAL1 ="BCDEFGHIJK" />
        </Storedprocedure>
        <Storedprocedure>
             <SP_CHAR_INOUT INOUTVAL1 ="CDEFGHIJKL" />
        </Storedprocedure>
  </Sincronizzazione>

In questo esempio, l'ultima chiamata di stored procedure nel <blocco di sincronizzazione> è la prima che viene eseguita.

Causa

BizTalk Adapter per DB2 archivia i record in un <blocco di sincronizzazione> in uno stack eseguito in ordine inverso. Questo comportamento fa parte di BizTalk Adapter per DB2 da quando Host Integration Server 2006.

Risoluzione

Informazioni sugli aggiornamenti cumulativi

La correzione che risolve questo problema è inclusa nell'aggiornamento cumulativo 2 per Host Integration Server 2013.

Soluzione alternativa

Per eseguire query SQL o chiamate a stored procedure nell'ordine elencato, inserire ogni chiamata di query o stored procedure nel proprio <blocco di sincronizzazione> , come nell'esempio seguente:

<Sincronizzazione>
        <Storedprocedure>
             <SP_CHAR_INOUT INOUTVAL1 ="ABCDEFGHIJ" />
        </Storedprocedure>
    </Sincronizzazione>
    <Sincronizzazione>
        <Storedprocedure>
             <SP_CHAR_INOUT INOUTVAL1 ="BCDEFGHIJK" />
        </Storedprocedure>
    </Sincronizzazione>
    <Sincronizzazione>
        <Storedprocedure>
             <SP_CHAR_INOUT INOUTVAL1 ="CDEFGHIJKL" />
        </Storedprocedure>
</Sincronizzazione>

Nota Quando si inserisce ogni chiamata di query o stored procedure nel proprio <blocco di sincronizzazione> e una delle query o delle chiamate di stored procedure non riesce per qualsiasi motivo, si ricevono aggiornamenti incompleti nel database DB2 perché ogni istruzione viene gestita nella propria transazione. 

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Altre informazioni

Dopo aver applicato questo aggiornamento, BizTalk Adapter per DB2 elabora ogni chiamata di query SQL e stored procedure contenuta in un <blocco di sincronizzazione> nell'ordine in cui è elencata nel file XML corrispondente.