Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.08.2001, 06:37
|
|||
|---|---|---|---|
Обновление данных в MSSQL из другой БД |
|||
|
#18+
Привет All! Очень надеюсь на дельные предложения в следующей ситуации: Имеется БД Informix, её можно любить или ненавидеть, но она просто ЕСТЬ и от этого никуда не деться... В названной БД накоплены достаточно объемные данные со следующими параметрами: примерно 200 таблиц прилично нормализованных и связанных; эти таблицы можно разделить на 3 типа тип1 - таблицы <1000 записей простой структуры меняются КРАЙНЕ редко. тип2 - таблицы >5 000 000 записей ежедневно в них добавляется до 15 000 записей (UPDATE-ов практически не бывает) тип3 - таблицы 5 000 ...100 000 в них записи добавляются и изменяются эпизодически Требуется копию всего это хозяйства периодически актуализировать (инкрементально) на SQL2000. Пытался сделать это через DTS, но столкнулся со следующими проблемами: во первых мышевозильный интерфейс интересен только первые 5 минут и для пары таблиц, а когда их много это напрягает во вторых таблицы типа2 нужно дополнять только новыми данными, следовательно узнав ID последней записи в target DB требуется передать его как параметр запроса в source DB. А DTS не дружит с Информиксным ODBC драйвером и не получается передать в него параметром этот самый полученный из source DB ID последней записи. Можно ли решения этой задачи воспользоваться хранимыми процедурами? Может для этой задачи есть более изящные пути решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.08.2001, 08:37
|
|||
|---|---|---|---|
Обновление данных в MSSQL из другой БД |
|||
|
#18+
Для того, чтобы понять всю мощь и красоту (не постесняюсь таких слов) DTS package 5 минут явно маловато. IMHO в DTS-ах есть все(или очень многое) для их самостоятельного существования. Например, динамическое изменение всех свойств всех уже созданных объектов package-а, а также и динамическое создание новых объектов - хотите через ActiveX Script Task, хототе через Dynamic Properties Task. Это к вопросу - "для пары таблиц, а когда их много это напрягает". "во вторых таблицы типа2 нужно дополнять только новыми данными, следовательно узнав ID последней записи в target DB требуется передать его как параметр запроса в source DB. " Попробовали ли вы использовать Execute SQL Task(и в ней кнопку Parameters) или еще лучше Data Driven Query Task ? А использовали ли Global variables "А DTS не дружит с Информиксным ODBC драйвером " - я думаю это проблема конкретного ODBC драйвера. И не совсем понятно, что значит не дружит ? Ошибка при создании коннекта или неправильная работа ? Конечно можно создать Linked Server для каждой таблицы Informix (здесь кстати придется использовать те же самые ODBC драйвера). Тогда можно использовать эти таблицы в хранимых процедурах в виде mylinkedserver...myinformixtable . НО в DTS-ах есть то преимущество по сравнению с хранимыми процедурами, что можно разбить алгоритм выполнения на сколь угодное количество логических шагов и наглядно представить ход выполнения всех шагов и определить реакции и дополнительные действия для каждого логического шага(отсылка почтовых или иных уведомлений, экспорт в различные сторонние форматы, да мало ли чего еще). К тому же имеется уже готовая возможность по трассировке выполнения package по шагам, что может пригодиться для дальнейшнго анализа. Мой совет(именно совет) - изучите (именно изучите, а не попробуйте использовать) DTS package и вы не пожалеете. PS Не подумайтк, что я против хранимых процедур - но при мне кажется что для именно задачи связывания гетерогенных источников данных DTS package все же подходит лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.08.2001, 01:34
|
|||
|---|---|---|---|
Обновление данных в MSSQL из другой БД |
|||
|
#18+
2 Glory К сожалению я затратил существенно больше 5-ти минут на "борьбу" c DTS, да и сейчас не отказался от решения задачи через него, только вот результаты пока неважные... Когда читаешь теорию то приходит как раз то ощущение восторга от как вы пишите "мощи и красоты", однако на практике приходится столкнуться с "прозой жизни". Относительно динамического создания объектов - спасибо за идею, действительно мне не стоит "рисовать" запрос для каждой таблицы - ведь можно обрабатывать их по списку! Что же касается Execute SQL Task(и в ней кнопку Parameters) и Global variables то именно их я и пытался использовать. Причем если в качестве source DB выступает не Informix, а MSSQL то все отлично работает. Когда же DTS пытается выполнить этот параметризованный запрос к Informix-ному ODBC тот возвращает невнятную ошибку. Я подозреваю что не удается сделать prepared statement с параметром. Хотя просто из программы на Java подобные запросы проходят на ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=Needer&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 685ms |
| total: | 856ms |

| 0 / 0 |
