Это возможно, но в реальном мире это немного сложнее, чем наивный подход, который вы себе представляете.Прежде всего, недопустимо ожидать триггера для ожидания HTTP-запроса:
- Во-первых, ваше приложение будет ползти до полной остановки, потому что триггеры будут блокировать ресурсы (прежде всего блокировки), ожидая ответа откакой-то дальний WWW сервис.
- Второй, более тонкий, но гораздо худший вопрос правильности при наличии откатов.Если транзакция, выданная HTTP-запросам, откатывается, невозможно отменить HTTP-запрос.
Решение состоит в том, чтобы отделить триггер от HTTP-запроса через очередь.Триггер помещает запрос в локальную очередь и фиксирует его, в то время как отдельный фрагмент обработки удаляет эти запросы и выдает HTTP-запрос.Это решает обе проблемы, указанные выше.Вы можете использовать обычные таблицы для очередей (см. Использование таблиц в качестве очередей ), или вы можете использовать Service Broker , обе работают хорошо.
Теперь о том, как убрать запросы из очереди.и на самом деле сделать HTTP-вызов, я настоятельно рекомендую использовать выделенный процесс (т.е. приложение, предназначенное для этой цели).Хотя можно использовать SQLCLR, это очень плохой выбор.Ресурсы SQL Server (в частности, рабочие ) очень драгоценны, чтобы тратить их на ожидание ответов в Интернете.