powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление данных в MSSQL из другой БД
3 сообщений из 3, страница 1 из 1
Обновление данных в MSSQL из другой БД
    #32011342
Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет 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 последней записи.

Можно ли решения этой задачи воспользоваться хранимыми процедурами?
Может для этой задачи есть более изящные пути решения?
...
Рейтинг: 0 / 0
Обновление данных в MSSQL из другой БД
    #32011354
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы понять всю мощь и красоту (не постесняюсь таких слов) 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 все же подходит лучше.
...
Рейтинг: 0 / 0
Обновление данных в MSSQL из другой БД
    #32011417
Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Glory
К сожалению я затратил существенно больше 5-ти минут на "борьбу" c DTS, да и сейчас не отказался от решения задачи через него, только вот результаты пока неважные...
Когда читаешь теорию то приходит как раз то ощущение восторга от как вы пишите "мощи и красоты", однако на практике приходится столкнуться с "прозой жизни".
Относительно динамического создания объектов - спасибо за идею, действительно мне не стоит "рисовать" запрос для каждой таблицы - ведь можно обрабатывать их по списку!
Что же касается Execute SQL Task(и в ней кнопку Parameters) и Global variables то именно их я и пытался использовать. Причем если в качестве source DB выступает не Informix, а MSSQL то все отлично работает. Когда же DTS пытается выполнить этот параметризованный запрос к Informix-ному ODBC тот возвращает невнятную ошибку. Я подозреваю что не удается сделать prepared statement с параметром. Хотя просто из программы на Java подобные запросы проходят на ура.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление данных в MSSQL из другой БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]