У моей оркестровки есть порт отправки-получения, и пока точка, где форма отправки не будет найдена, все обрабатываемые сообщения будут абсолютно одинаковыми. То есть сообщение, которое я заканчиваю тем, что отправляю базу данных Oracle через порт send-receive, идентично.
По сути, я отправляю в БД запрос, в котором указано, от какой таблицы я хотел бы получить последние изменения и кто является владельцем таблицы. Как я уже упоминал, при сравнении обновления, которое работало, и того, которое не работало: до этого момента оба сообщения запроса были одинаковыми.
Проблема : Ответ от базы данных может быть пустым и никогда не должен быть. Я ожидаю, что полная строка из таблицы изменилась, и иногда я ничего не получаю.
Подробности : я изменяю только самые простые поля для запуска этих тестов и всегда один и тот же - целочисленное поле, которое я уменьшаю или увеличиваю с 99 до 98 до 97 до 98 ... и т. Д. Один номер может сработать в первый раз, но не второй, а иногда наоборот.
Любое другое поле может вызвать эту ошибку.
Подробнее ... : Похоже, что функционирование Oracle может быть ошибочным. То есть то, как он обрабатывает метки времени, может привести к тому, что Oracle вернет пустую запись, поскольку предполагается, что Biztalk уже был уведомлен об изменении. Изучив внутреннюю часть БД, мы увидели, что все мои последние попытки изменения были помечены с точностью до одной и той же точной секунды (физически невозможно, учтите).
Также, похоже, что когда я отправляю Oracle сообщение, оно делает свое дело дважды , что, похоже, вызывает ошибку (кстати, нет никаких триггеров в таблице-нарушителе). В моей оркестровке я пишу в журнал событий прямо перед отправкой сообщения, и это сообщение пишется только один раз ...
Похоже, это может быть проблема с Oracle. Теперь последовательно работающее поле не работает, а другие поля иногда работают - я думаю, что раньше ничья была удачей.
Почему я думаю, что это происходит: я прошу дать мне клиента, который (БД сказал мне) изменился, и он (каким-то образом - это загадка) запускает свой поиск дважды. Раз это работает, это первый запрос, который возвращает сообщение в Biztalk и, таким образом, содержит актуальную информацию. Когда этого не происходит, это происходит потому, что второй поиск запрашивает последние изменения, а их нет, потому что первый поиск уже получил их и возвращает пустую запись.