Альтернатива использованию VIEWS в базе данных SQL-сервера поставщика

У меня есть поставщик SQL Server 2008 db, к которому я пытаюсь добавить дополнительные таблицы и т. Д., Чтобы настроить для моего сайта обработки заказов .Net 3.5. БД поставщика не должна быть изменена. Однако мне нужно записать текущий статус заказа, который не включен в базу данных поставщика.

В настоящее время я использую VIEW с CASE, чтобы получить статус на основе данных в таблице заказов. Чтобы повысить производительность, я хотел бы создать новую таблицу состояния с OrderID и Current_Status.

Существует ли альтернатива частому запуску скрипта, который будет просматривать все заказы и соответствующим образом обновлять таблицу статусов, чтобы поддерживать актуальность таблицы статусов?


person desflan    schedule 04.08.2012    source источник
comment
Определите, что вы имеете в виду под The vendor db should not be altered. добавлением представления или таблицы изменяет базу данных, но вы делаете эти два варианта. Можете ли вы добавить триггеры в таблицы поставщиков? Заполняются ли таблицы поставщика хранимыми процедурами, и можете ли вы изменить эти хранимые процедуры?   -  person MatBailie    schedule 04.08.2012
comment
Я имею в виду, что таблицы поставщиков и сохраненные процедуры (используемые для вставки) не должны изменяться, и в эти таблицы не следует добавлять триггеры. Однако добавление дополнительных таблиц, представлений и т. д. допустимо. Спасибо за ваш ответ   -  person desflan    schedule 04.08.2012


Ответы (3)


Создание задания или другого решения типа опроса, вероятно, подойдет, если нагрузка, налагаемая запросом, невелика, и если вы можете допустить некоторую задержку перед синхронизацией данных.

Если вы можете допустить хотя бы некоторую задержку, но запрос на проверку таблицы обширен или если у вас есть несколько таблиц, над которыми вы хотите выполнить эту операцию, вы также можете использовать Отслеживание изменений, поскольку у вас есть SQL Server 2008.

Вот ссылка о том, как ее использовать.

person mwigdahl    schedule 04.08.2012

Создайте задание SSIS для проверки заказов и обновления таблицы состояния. И запланируйте его запуск ежечасно/ежедневно (согласно вашему требованию). Создание заданий SSIS не повлияет ни на один из ваших процессов или объектов поставщика.

person Pradeeshnarayan    schedule 04.08.2012
comment
Спасибо за чаевые. Должен ли я ожидать большого снижения производительности базы данных при выполнении задания SSIS каждые 30 минут и сканировании поля date_modified тысяч строк в таблице заказов, чтобы определить, что необходимо обновить в таблице состояния? - person desflan; 04.08.2012

Если вас беспокоит производительность, как насчет индексированного представления?

person Ben Thul    schedule 05.08.2012
comment
В настоящее время я использую индексированное представление, которое оказывается очень неэффективным из-за сложности оператора CASE, используемого для определения статуса каждый раз, когда пользователь просматривает заказ. Следовательно, моя причина хранить статус в таблице сама по себе. - person desflan; 05.08.2012
comment
Но это то, что касается индексированных представлений; сервер материализует представление и делает его более или менее похожим на таблицу. Это означает, что он хранит представление физически. Просто для ясности: вы создали индекс для своего представления, и он все еще работает медленно? - person Ben Thul; 06.08.2012