Я не уверен, как вы думаете, что SQLCLR решит эту проблему. Я не думаю, что это вообще нужно обрабатывать в БД.
Поскольку время запроса не меняется, почему бы не загрузить все запросы в хранилище на основе памяти, в которое можно постоянно обращаться. Вы бы загрузили 24-часовое время от запроса, так что вам нужно только сравнить это время с Сейчас. Если клиент платит до 24-часового периода, вы удаляете запись из кэша. Иначе процесс опроса в конечном итоге найдет его, обработает и удалит из кеша.
ИЛИ аналогичным образом вы можете использовать планировщик и загружать будущее событие в виде SMS-сообщения, основываясь на времени 24 часа с момента запроса, при каждом запросе. Аналогично планированию действия с использованием «AT». Опять же, если кто-то платит до этого времени, просто удалите запланированное задание / событие / напоминание.
Вы будете хранить только 24 часа в сутки и RequestID
. Если время истекло, служба обратится к БД, используя эту RequestID
, чтобы получить текущую информацию.
Необходимо просто удалить элементы из кэша / планировщика, если оплата была произведена до 24-часового периода позже.
И если система дает сбой / перезапускается, вы просто загружаете все записи, которые а) не оплачены, и б) еще не достигли своего 24-часового периода ожидания.