SQL Server для отправки электронной почты с уведомлением о данных, вставленных в таблицу - параметры?
У меня есть база данных SQL Server, которая совместно используется несколькими веб-сайтами ASP.NET (VB.NET), в базе данных есть таблица, в которой хранятся запросы клиентов - я хочу предоставлять уведомления по электронной почте, информирующие о новых запросах, чтобы предупредить людей внутри организации (и, возможно, положить некоторые данные запроса в тело письма). Пожалуйста, кто-нибудь может описать мои варианты с точки зрения того, как это можно реализовать?
Мои мысли:
- SQLMail
- База данных Почта
- Хранимая процедура VB.NET с использованием библиотеки System.Net.Mail?
- Другие опции?
Вариант 3 кажется желательным, потому что я знаю, как сделать это в VB.NET, и это тривиально.
- Какие у меня есть другие варианты?
- Какие предостережения?
- Могу ли я сделать это в режиме реального времени, то есть триггера (громкость вставок низкая)?
- или это жизненно важно, чтобы это было сделано в партии, то есть на работе?
Любая помощь очень приветствуется! Благодарю.
2 ответа
Между 1), 2) и 3) стоит рассмотреть только 2). 1) мертворожденный, использует устаревшую функцию, печально известную своими проблемами и проблемами. 3) это плохая идея, потому что она нарушает согласованность транзакций (почта SMTP отправляется, даже если вставка откатывается) и является причиной снижения производительности, так как вызывающая сторона (предположительно, ваша веб-страница отображается) должна ждать до завершения обмена SMTP (т.е. синхронно). Только 2) обеспечивает согласованность транзакций и является асинхронным (не блокирует вызывающего до завершения SMTP).
Обычно, хотя такую задачу лучше делегировать задаче служб Reporting Services. Вы должны создать подписку на основе данных с доставкой по электронной почте. Это работает "из коробки", не нужно изобретать велосипед.
Я работал с подобной ситуацией, и решение, которое я использовал, заключалось в том, чтобы служба Windows C# проверяла очередь заданий сервера SQL каждую минуту. Эта очередь заданий будет включать такие задания, как отправка электронного письма. Затем вы можете использовать TRIGGER на вашем столе, чтобы вставить новое задание "Email Alert", которое будет получено в следующем цикле.