MSSQL IS: определение дельты

Elen13

есть БД на access, файл
достаточно тупой - плоский
хочется его загнать в SQL Server, а потом синхронизировать, для доступа из analysis services
обновления раз в неделю, данные привязаны по времени + задним числом старые данные могут меняться (до пары месяцев)
integration services ни разу не пользовался поэтому вопросы
1) сделал проект, определил control flow из одного пункта, сделал data flow
как определить график запуска приложения? навскидку рецептов и примеров найти не удалось, почти всё top of search сконцентрирована на построении ETL модели
2) база не особо большая, но всё равно не хотелось бы заново подгружать только новые строки, и обновившиеся, поменять процесс ведения БД в Access не получится, поэтому хотелось бы автоматического определения дельты
в крайнем случае устроит удаление "хвоста" в последние пару месяцем, и импорт такого же "хвоста" из access
как это сделать?
с хвостом думаю сделать через контрол lookup nomatch output, в качестве референса взять все существующие даты из таблицы минус 2 месяца
как перед импортом данных вычистить от "старых" данных базу? это делается в самом MS SQL, или это из integration services можно сделать?

kill-still

Я нихуя не понял.
1) Что ты имеешь в виду под дельтой?
2) Что ты имеешь в виду под хвостом?

Elen13

Я нихуя не понял.
1) Что ты имеешь в виду под дельтой?
2) Что ты имеешь в виду под хвостом?
дельта - различающиеся строки в мастер-базе и зеркале, зеркало на эту дельту как раз обновляется, что б синхронизировать с мастер-базой
"хвост" - записи за какой-то крайний период, например за последнюю неделю. Т.к. мастер-база обновляется раз в неделю то разумно просто в качестве дельты брать все данные за определённый временной период - это и есть хвост

kill-still

3) Данные меняются и в мастер базе и в зеркале?
4) Зеркал много?
5) Как ты хочешь чтобы себя вели коллизии? Как быть если в мастере поменяли одно поле, а в зеркале другое? При импорте изменений из зеркала, данные в мастере просто затираются?

Elen13

3) Данные меняются и в мастер базе и в зеркале?
4) Зеркал много?
5) Как ты хочешь чтобы себя вели коллизии? Как быть если в мастере поменяли одно поле, а в зеркале другое? При импорте изменений из зеркала, данные в мастере просто затираются?
3) данные меняются только в мастер-базе
4) одно
5) в зеркале ничего не правится. коллизия может быть если в мастере поменяли какое-то поле, то его надо обновить в зеркале.

hprt

Если тебе MSSQL нужен только для Analysis Servises, так может оттуда напрямую в Access лезть?

kill-still

В таком случае всё элементарно:
1) В таблице в мастере добаляешь поле версия. (с индексом!)
2) Создаёшь секуенс.
3) На обновление таблицы в мастере вешаешь триггер, который в поле версия пишет значение секуенса.
при синхронизации:
4) Выбираешь максимальное значение версии в зеркале.
5) Скидываешь в зеркало все строки у которых значение поля версия больше этого числа.

Elen13

в 2008ом analysis services видимо так не умеют

Elen13

примерно так и думал сперва
но поменять процесс ведения access базы не получится

kill-still

Это почему это?

Elen13

огульный долбоебизм и нежелание чего-либо менять

hprt

Это кто такую чушь сказал? Главное, чтоб провайдер был, и все, а провайдеры такие есть.
Еще как идея - перенести таблицы из Access на сервер. Сам не делал, но по идее должно быть довольно просто + прозрачно для пользователей

0000

Зеркало должно хранить версионность данных? Источник насколько я понял не хранит.
Если достаточно просто удаленно обновляться, то смотри оператор MERGE (старые записи обновятся, новые вставятся).
Разумеется желательно количество выбираемых данных с источника минимизировать.
Если ты ручками в lookup сравниваешь все столбцы, то лучше добавь hash-по всем столбцам и сравнивай его.
P.S. IS не видел ни разу.

suid

Сделай джоб, запускающий процедуру по графику. Процедурой можно просто брать весь access и мерджить с зеркалом. зачем is?
Оставить комментарий
Имя или ник:
Комментарий: