sqsqsq
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Искал ответа в системной ветке, но за неделю не пришло ни одного коммента, похоже, надо сначала здесь узнать, а тему прибить. Исходные данные Есть сервер Win2008 (r2) Standard SP1 64. На нем сервис собирает данные с датчиков и записывает в MS SQL 2008 (10.50.1600). Если сервис видит что-то подозрительное, он делает запись в таблицу [TestDB].[dbo].[Commands] Нужно при срабатывании датчика отправить email с отчетом в приложении, а точнее: 1. Мониторить новые записи в [TestDB].[dbo].[Commands] 2. При появлении новой записи узнать IP адрес сработавшего датчика 3. Зайти по IP адресу по HTTP, дать команду на генерацию PDF отчета, подождать минуты 2-3, пока отчет будет готов, скачать отчет на диск 4. Отправить емейл с отчетом в аттаче Сначала в общем, как к этому подходил 1. изменение данных в таблице отслеживал триггером 2. адрес можно вытащить из БД - запросом в теле триггера 3. самая непонятная часть. У датчика есть веб интерфейс, через который можно зайти и, нажав несколько кнопок и подождав пару минут, получить кнопку для скачки PDF отчета. Данные для отчета собираются с самого устройства скриптом сразу в PDF, прямо в браузере, после чего есть возможность сохранить его. То есть, сам отчет нигде не хранится, пока его не сохранят принудительно, нажав на кнопку Download со свойством onclick="downloadReport()". Пока что научился это делать через AutoIt (открываю браузер, точнее не браузер а IE, в нем захожу на нужную страницу, заполняю данные в форму, нажимаю кнопку генерации отчета, жду появления кнопки скачать, сохраняю PDF файл и заодно пишу полное имя файла в лог, симулирую нажатие клавиш для подтверждения сохранения файла (спасибо мелкософту), закрываю ИЕ) и запускать его через MS SQL Server Agent Job, который еще к тому же вызывает задание планировщика виндовс schtasks, который стартует исполняемый файл, сгенерированный в AutoIt. 4. рассылка уведомления средствами MS SQL Server mail, имя файла для аттача считывается из лога, полученного на предыдущем шаге Что пока удалось сделать: 1. В MS SQL cоздал триггер на изменеие [TestDB].[dbo].[Commands] Триггер в цвете со слетевшим форматированием Тот же триггер с отступами для копи-паста в ssms 2. Скрипт AutoIt уже описал, что он делает. Но выкладывать его здесь стыдно , да и, пожалуй, бессмысленно. Вопросы Подскажите, как такие задачи решаются по-людски? Оставить SQL сервер выполнять только свою непосредственную задачу - хранить данные, а отслеживать изменения и рассылать емэйлы сторонними средствами? Тогда какими? И как организовать передачу данных от sql сервера внешнему приложению и обратно (ну не через файл же!)? Или же можно на SQL вешать и задачи рассылки тоже? PS1 Прошу прощения за форматирование кода, постарался сделать его цветным, при этом слетели отступы. |