Вставки та збережені виклики процедур обробляються у зворотному порядку під час використання адаптера BizTalk для DB2

Застосовується до
Host Integration Server 2013

Ознаки

Якщо в сервері Host Integration Server 2013 надіслати кілька запитів SQL або збережених викликів процедур в одному <блоці синхронізації> , виклики оброблятимуться не так, як очікувалося. Наприклад, наведений нижче зразок коду XML включає кілька збережених викликів процедур в одному <блоці синхронізації> :

<синхронізація>
        <StoredProcedure (Збережена процедура)>
             <SP_CHAR_INOUT INOUTVAL1 ="ABCDEFGHIJ" />
        </StoredProcedure>
        <StoredProcedure (Збережена процедура)>
             <SP_CHAR_INOUT INOUTVAL1 ="BCDEFGHIJK" />
        </StoredProcedure>
        <StoredProcedure (Збережена процедура)>
             <SP_CHAR_INOUT INOUTVAL1 ="CDEFGHIJKL" />
        </StoredProcedure>
  </sync>

У цьому прикладі першим виконується останній збережений виклик процедури в <блоці синхронізації> .

Причина

BizTalk Adapter for DB2 зберігає записи в <блоці синхронізації> в стеку, який виконується у зворотному порядку. Ця поведінка присутня в BizTalk Adapter для DB2 починаючи з Host Integration Server 2006.

Спосіб усунення проблеми

Сукупні відомості про оновлення

Виправлення, яке усуває цю проблему, входить у сукупний пакет оновлень 2 для Host Integration Server 2013.

Спосіб вирішення

Щоб виконувати запити SQL або збережені виклики процедур у наведеному порядку, помістіть кожен запит або збережений виклик процедури в окремий <блок синхронізації> , як у прикладі нижче.

<синхронізація>
        <StoredProcedure (Збережена процедура)>
             <SP_CHAR_INOUT INOUTVAL1 ="ABCDEFGHIJ" />
        </StoredProcedure>
    </sync>
    <синхронізація>
        <StoredProcedure (Збережена процедура)>
             <SP_CHAR_INOUT INOUTVAL1 ="BCDEFGHIJK" />
        </StoredProcedure>
    </sync>
    <синхронізація>
        <StoredProcedure (Збережена процедура)>
             <SP_CHAR_INOUT INOUTVAL1 ="CDEFGHIJKL" />
        </StoredProcedure>
</sync>

Примітка Якщо ви розміщуєте кожен запит або збережений виклик процедури в окремому блоці <синхронізації> , і один із запитів або збережених викликів процедур з якоїсь причини завершується помилкою, ви отримуєте неповні оновлення в базі даних DB2, оскільки кожен оператор обробляється в своїй транзакції. 

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

Додаткові відомості

Після застосування цього оновлення BizTalk Adapter for DB2 обробляє кожен SQL-запит і збережений виклик процедури, що містяться в блоці <синхронізації> , у тому порядку, у якому вони вказані в супровідному XML-файлі.