В настоящее время я работаю над проектом, который основан на:
Azure EventHub1-->Stream Analytics1-->БД SQL Server
Azure EventHub1-->Stream Analytics2-->БД документов
И SQL Server, и DocumentDB имеют соответствующие задания Stream, но совместно используют один и тот же поток EventHub.
DocumentDB — это архивный приемник, а SQL Server DB — это база отчетов, в которой должны храниться данные только за 3 дня. Это соответствует требованиям эффективности отчетов и запросов.
Ежедневно мы получаем около 30 000 сообщений через EventHub, которые передаются через задание Stream (базовый запрос SELECT, без манипуляций) в таблицу SQL Server.
Чтобы сохранить данные за 3 дня, мы разработали приложение логики, которое вызывает SQL SP, который удаляет любые данные на основе даты старше 3 дней. Ходит каждый день в 12.00.
Кроме того, существует еще одно бизнес-правило Logic App, которое ЧИТАЕТ из таблицы SQL для выполнения проверок бизнес-логики. Ходит каждые 5 мин.
Мы заметили, что по какой-то странной причине приложение логики для удаления данных не работает, а данные за месяц накопились до 3 миллионов строк. SP можно запустить вручную, как это было протестировано в программе установки Dev.
Приложение логики показывает статус Выполнено успешно, но шаг выполнения SP показывает желтую галочку, которая при раскрытии говорит о том, что предпринято 3 попытки.< /сильный>
Я не уверен, почему SP не удаляет старые данные. Насколько я понимаю, поскольку задание Stream продолжает отправлять данные, операция удаления в SP не может получить блокировку удаления и время ожидания.