Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Добрый день! У нас стоит Microsoft Sql Server. Есть таблица, в которую добавляется запись для формирования счета. Сам счет в pdf формирует консольное приложение. На данный момент приложение запускается раз в минуту, что не очень хорошо. Хочется, чтобы приложение запускалось, когда добавлялось новая запись в таблицу. В Google посмотрел, что есть. Вижу два варианта - триггер или Sql Агент. Триггер, я так понимаю, не очень подходит. Кто-нибудь делал что-нибудь похожее через Sql агент? Может есть пример или что-то подобное. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 10:02 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Совсем правильно будет задействовать компонент Service Broker. На таблицу вешаешь триггер, который отсылает сообщение сервис брокеру. А в обработчике сообщений уже вызываешь соответствующее приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 11:04 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
D_A_S1Добрый день! У нас стоит Microsoft Sql Server. Есть таблица, в которую добавляется запись для формирования счета. Сам счет в pdf формирует консольное приложение. На данный момент приложение запускается раз в минуту, что не очень хорошо. Хочется, чтобы приложение запускалось, когда добавлялось новая запись в таблицу. В Google посмотрел, что есть. Вижу два варианта - триггер или Sql Агент. Триггер, я так понимаю, не очень подходит. Кто-нибудь делал что-нибудь похожее через Sql агент? Может есть пример или что-то подобное. Заранее спасибо! Как написали уже 1. Service Broker 2. Прикрутить в приложение SqlChangeMonitor (SqlDependency) и активироваться, если в некой таблице произошли изменения 3. SQLCLR процедура, которая вызывается в триггере и отправляет сообщение приложению, как клиент сервису (WCF, RestFul, sockets...), оно активируется и что-то там делает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 11:27 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
D_A_S1, у вас, извиняюсь, штаны через голову надеваются. Инициировать вызов формирования PDF должен не сервер, а то приложение, которое добавляет запись в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 12:01 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовИнициировать вызов формирования PDF должен не сервер, а то приложение, которое добавляет запись в базу.Вот интересно, если "добавить запись в базу" случается в серверном коде и является следствием некого действия в приложении, которое вообще не в курсе, что такое счета и формирование PDF, что в этом случае будет надеванием штанов через голову? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 12:23 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
invm, моя точка зрения состоит в том, что если MS дает возможность серверу баз данных выполнять внешние приложения, то это не значит, что именно так и надо поступать и превращать СУБД в сервер приложений. Да, есть безвыходные ситуации, например, при использовании коробочного ПО. Но закладывать в архитектуру своего приложения такое поведение неверно. Сервер должен обслуживать базы данных и не более того. Он не должен управлять производственными процессами. Вполне возможно, что сервер должен рассылать оповещения через end-point об изменениях в данных. Если речь идет о формировании отчетности, то можно использовать решение на базе Reporting Services, который имеет возможность строить отчеты и сохранять в том же PDF по мере поступления данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 12:37 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовinvm, моя точка зрения состоит в том, что если MS дает возможность серверу баз данных выполнять внешние приложения, то это не значит, что именно так и надо поступать и превращать СУБД в сервер приложений. Да, есть безвыходные ситуации, например, при использовании коробочного ПО. Но закладывать в архитектуру своего приложения такое поведение неверно. Сервер должен обслуживать базы данных и не более того. Он не должен управлять производственными процессами. Вполне возможно, что сервер должен рассылать оповещения через end-point об изменениях в данных. Если речь идет о формировании отчетности, то можно использовать решение на базе Reporting Services, который имеет возможность строить отчеты и сохранять в том же PDF по мере поступления данных. Это идеальный случай, но жизнь вносит свои коррективы, и вполне возможно сделать некую обратную связь, ни к чему не обязывающую сервер, fire&forget ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 12:40 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовСервер должен обслуживать базы данных и не более тогоСервер должен обеспечивать работу бизнеса наиболее эффективно и наименее затратно. Если при этом потребуется нарушить дурацкие догматы типа "ничего кроме select, insert, update и delete", то так и нужно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 12:51 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
invm, догматы не дурацкие, они сводят затраты на сопровождение, развертывание и миграцию к минимуму. Я уже прошел стадию "вседозволенности" и мне знакомы Ваши утверждения, потому что я их сам практиковал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 17:31 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовinvm, догматы не дурацкие, они сводят затраты на сопровождение, развертывание и миграцию к минимуму. Я уже прошел стадию "вседозволенности" и мне знакомы Ваши утверждения, потому что я их сам практиковал :) Service Broker - вырезать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 18:08 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовдогматы не дурацкиеДогматы потому и дурацкие, что они догматы. Владислав Колосовони сводят затраты на сопровождение, развертывание и миграцию к минимуму.Ок. Предположим есть необходимость в ответ на некое событие в БД запускать внешнее приложение. Ваши действия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 19:00 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
invm, Вряд ли событие само рождается на сервере. С вероятностью в 99% оно инициируется внешним приложением. Вот снаружи и надо все стараться обустраивать. А иначе - это действительно штаны не оттуда одевать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 20:09 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Massa52С вероятностью в 99% оно инициируется внешним приложением.Т.е. внешнее приложение должно быть осведомлено о событиях, которые могут случиться при каких-то манипуляциях с БД? Про принцип "черного ящика" что-нибудь слышали? Massa52Вот снаружи и надо все стараться обустраивать.Ох уж мне эти архитекторы... Где обустраивать-то собрались? И кто вам сказал, что "наружа" вообще должна знать, что нужно что-то и когда-то запускать при определенных условиях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 20:56 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовinvm, догматы не дурацкие, они сводят затраты на сопровождение, развертывание и миграцию к минимуму. Я уже прошел стадию "вседозволенности" и мне знакомы Ваши утверждения, потому что я их сам практиковал :) Тогда надо исключить DbMail из состава сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2017, 21:16 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
Lepsik, Если представить базу данных как хранилище - скажем склад товаров(ИКЕА), то DbMail выглядит как почтовое/транспортое отделение при хранилище. И он не работает с товарами. Это кладовшик/покупатель выкатывает товары на тележке и, там в(DbMail) оформляет доставку. Это просто дополнительный сервис и не в тему с топиком. Ну а если продолжить аналогию и обратиться к проблеме TC, то получается, что поставщик прикатил на склад товар и умыл руки. И тут должен кладовщик принявший товар сообразить и вовремя подать сигнал покупателю(а это дополнительная служба) - мол твой товар прибыл. Такая служба тоже востребованный сервис(в данном случае никто не утверждает - что он не нужен). Но в большинстве случаев - тот кто прикатывает конкретный товар в курсе кому он предназначен и может сообщить поставщику - что товар доставлен - не задействую при этом складские службы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2017, 13:24 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
используйте https://github.com/event-driven-arch/mssql2amqp в качестве amqp брокера используйте http://www.rabbitmq.com/getstarted.html протокол реализован на самых популярных языках программирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 11:18 |
|
||
|
Запуск консольной программы при добавлении записи в таблицу
|
|||
|---|---|---|---|
|
#18+
yaxinrв качестве amqp брокера используйте http://www.rabbitmq.com/getstarted.html Он сможет запустить "format c:"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 13:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39449287&tid=1689868]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 416ms |

| 0 / 0 |
