Мне нужно, чтобы таблица была синхронизирована с рекурсивным запросом CTE, который объединяется в несколько таблиц. CTE может возвращать разные результаты каждый раз, когда он выполняется (если какие-либо изменения были внесены в таблицы, к которым он присоединяется). CTE медленный, и я не могу позволить ему запускать триггер, поскольку запрос, вызвавший срабатывание триггера, не будет возвращаться до тех пор, пока не будет запущен триггер (я не хочу, чтобы простое обновление для одной записи 15 секунд, потому что он ждет на триггере, чтобы закончить). Любые подробности о том, как реализовать решение в SSMS, тоже были бы хороши, но не обязательно.Необходимо синхронизировать таблицу с запросом (представлением) в той же базе данных сервера Sql
Одним из решений было бы выполнить запланированное задание CTE и объединить результаты с таблицей. Запланированное задание может выполняться каждые несколько секунд, чтобы таблица была как можно более актуальной. Но я не знаю, как создать запланированное задание на Sql Server 2005 или как объединить результаты запроса CTE с таблицей.
Чтобы пересчитать мой вопрос:
Как сохранить таблицу в актуальном состоянии как можно ближе к реальному времени, насколько это возможно с помощью КТР?
Запланированные задания могут выполняться один раз в минуту не чаще, чем каждые несколько секунд. Я подозреваю, что ответ вполне может включать очередь сервис-брокера. Насколько критично это, если таблица возвращает устаревшие данные? т.е. если «selects» блокируется, если таблица еще не синхронизирована? –
Нет. Гораздо лучше держать таблицу по выбору. Это сложная задача. Что касается времени синхронизации ... это нормально, если вы будете на минуту или две из синхронизации. –