2009-03-03 3 views
0

Мне нужно синхронизировать базу данных SQL Server с Oracle через прозрачный шлюз Oracle. Синхронизация выполняется партиями, поэтому мне нужно получить следующий набор данных с того места, где я остановился.Как иметь частичную инкрементную синхронизацию на основе GUID?

Проблема, с которой я столкнулась, заключается в том, что единственное поле, которое у меня есть в источнике, чтобы помочь мне, является GUID. Если бы это был номер, я мог бы просто заказать его, сохранить последний обработанный и перезапустить процесс, получив записи, которые являются> моим записанным номером. Это не будет работать с GUID.

Любые идеи?

ответ

0

Видимо это работает: SELECT * FROM v_source_supplier_prices WHERE HEXTORAW (Replace (ID, '-', ''))> HEXTORAW (REPLACE ('0022F17B-24B3-43EC-8D81-FFD3149950E7', '-', '')) ЗАКАЗ ПО HEXTORAW (REPLACE (ID, '-', ''))

ID - это поле GUID в исходной системе.

Я не уверен, какой ценой ...

+0

Что-то добавить в «список вещей, которым нельзя доверять». :) –

0

Вы можете сортировать строки (VARCHAR, VARCHAR2) тоже так зачем вам нужен номер? Не быстрее ли конвертировать строки в строки. Может быть, они уже хранятся как строки?

+0

Я думаю, проблема в том, что новые записи не могут быть гарантированы добавлением «после» определенного GUID, где завершилась последняя синхронизация. Если он заказал GUID, он может пропустить запись, вставленную «до» «наивысшего» GUID. –

+0

Верно, что вопрос можно интерпретировать по-разному. «если это где число». Вы думаете, что OP означает число, которое увеличивается со временем, как последовательность. Может быть. – tuinstoel

 Смежные вопросы

  • Нет связанных вопросов^_^