Модуль репликации через электронную почту

image Репликация данных через эл. почту: Написал краткий отчет по реалицазии модуля по переносу данных. Особенности реализации: нет постоянной связи между СУБД, нет возможности менять приложение работающее на этой базе, реализация полностью средствами СУБД. СУБД: MS SQL 2000

Данный модуль призван обеспечить передачу данных между разделенными узлами единой информационной системы. В частности для сбора информации с филиалов в головную компанию. Модуль реализован вне связи с приложениями работающими с базами, то есть модуль не вникает в бизнес логику системы, таким образом возможна его установка практически на любую систему. Аналогичный модуль был релизован для проекта ГАС Выборы на Oracle 9i (там пакеты передавались посредством ftp). Так как проект в целом является коммерческим, то исходные коды хранимых процедур я не выкладываю, но общую концепцию работы модуля привожу ниже:

image

Реализация:

Решение поставленной задачи с учетом требований по реализации можно разбить на несколько этапов:

1) Запуск сбора транспортного файла. Решается настройкой задачи либо в MS SQL Server либо задачи на уровне OS.

2) Сбор, подготовка файла Решается хранимой процедурой размещенной в исходной базе. Хранимая процедура учитывает дату последней репликации. Использует временную базу данных для хранения измененных данных. Делает backup временной базы, сжимает его, делает отметку в таблице логов о том, что сбор транспортного файла завершена.

3) Отправка его по почте После сбора пакета выполняется попытка послать пакет по почте. Дальнейшую работу по отправке выполняет внешняя программа. (xpsmtp.dll)

4) Прием почты, выгрузка из нее файла на диск По расписанию запускается проверка электронной почты пришедшей на конкретный адрес, и если есть новая почта, то она разбирается, а пакет с данными сохраняется на диске. При этом письма без данных либо в неверном формате игнорируются и удаляются. Вызывается процедура по подготовке данных для экспорта. (ZERAT)

5) Подготовка данных для экспорта. Хранимая процедура. Данные поднимаются во временную БД, делается отметка о приеме файла в таблице логов. Запускает перенос данных в целевую БД.

6) Перенос данных в целевую БД. Хранимая процедура на целевом сервере, применяет новые данные к целевой базе (добавляет, обновляет). После окончания ставит отметку в таблице логов о том, что данные применены.

Поставка:

1)Скрипт по настройке исходной базы, его функции: Добавить в таблице поле date_mod и повесить два триггера на insert и update. Создать таблицу логов. Создать хранимую процедуру для сборки пакетов .

2) Скрипт по настройке целевого сервера, его функции: Привести структуру таблиц в соответствие с исходной базой. Создать хранимую процедуру для разбора пакетов.

3) Инструкция по настройке и эксплуатации. 4) Список внесенных изменений в базы, с описанием.

Файлы модуля репликации через электронную почту

Техническое задание репликация MS SQL 182 kb
Установка, настройка, эксплуатация 200 kb
XPSMTP.DLL — SQL Server 2000 SMTP Mail XP 94 kb
Zerat — консольный pop3 44 kb