Почему делают Представления SQL Server должны быть обновлены время от времени

Это зависит от того, что Вы ищете, поскольку у каждого из них есть их за и против.

  1. Spring.NET является самым сформировавшимся, поскольку это выходит, Возникают из мира Java. Spring имеет очень богатый набор библиотек платформы, которые расширяют его для поддержки сети, Windows, и т.д.
  2. Castle Windsor является одним из наиболее широко используемый в платформе.NET и имеет самую большую экосистему, высоконастраиваем / расширяемый, имеет пользовательское пожизненное управление, поддержку AOP, имеет свойственную поддержку NHibernate и является всеми вокруг потрясающего контейнера. Виндзор является частью всего стека, который включает Монорельсовую дорогу, Активную Запись, и т.д. сам NHibernate создает сверху Виндзора.
  3. Structure Map имеет очень богатую и мелкомодульную конфигурацию через внутренний DSL.
  4. Autofac контейнер МОК нового века со всем, им - свойственная поддержка функционального программирования. Это также проявляет другой подход на руководящем времени жизни, чем другие. Autofac является все еще очень новым, но он продвигает панель на том, что возможно с МОК.
  5. Ninject я услышал, больше скелета с меньшем, больше подхода (слышал не опытный).
  6. самый большой различитель [1 120] Unity : это от и поддерживается Microsoft (p& p). Единица имеет очень хорошую производительность и замечательную документацию. Это также высоконастраиваемо. Это не имеет всех дополнительных свойств, говорят что Замок / Карта Структуры.

Так, таким образом, это действительно зависит от того, что важно для Вас. Я согласился бы с другими при движении и оценке и наблюдении, которому соответствует. Хорошая вещь - Вы, имеют хороший выбор пончиков вместо того, чтобы просто иметь необходимость иметь желе один.

12
задан TylerH 4 January 2019 в 20:33
поделиться

2 ответа

Представления необходимо обновить, если базовые таблицы вообще изменятся. Это может изменить типы данных столбцов представления или переупорядочить его индексы. Следовательно, это необходимо знать. В противном случае вы бы запустили запрос к нему, и он довольно быстро взорвался бы.

Вам не нужно запускать sp_refreshview для изменения представления. Только для изменения лежащих в основе таблиц.

Также, пожалуйста, не насмехайтесь над счастливым забавным шаром.

Редактировать: Просто запустил этот код (последовательно), чтобы попытаться воспроизвести вашу проблему. Я, к сожалению, не смог, так как он работал должным образом (SQL Server 2008):

create view MyView
as
select ProductKey, ProductID, ProductName, Price
from dbo.Products

select v.* from MyView v

alter view MyView
as
select ProductKey, ProductID, ProductName, Price*100 as MyPrice
from dbo. Products

select v.* from MyView v
10
ответ дан 2 December 2019 в 21:03
поделиться

Используйте WITH SCHEMABINDING в определении представления, чтобы избавиться от необходимости обновлять

И в сочетании с ALTER VIEW, а не конструктором

Edit, июль 2012 г. , по ссылке выше. Мой жирный шрифт

SCHEMABINDING

Привязывает представление к схеме базовой таблицы или таблиц. Когда указан SCHEMABINDING, базовая таблица или таблицы не могут быть изменены таким образом, чтобы это повлияло на определение представления . Само определение представления необходимо сначала изменить или отбросить, чтобы удалить зависимости от изменяемой таблицы. Когда вы используете SCHEMABINDING, select_statement должен включать в себя состоящие из двух частей имена (schema.object) таблиц, представлений или пользовательских функций, на которые есть ссылки. Все упомянутые объекты должны находиться в одной базе данных.

Представления или таблицы, которые участвуют в представлении, созданном с помощью предложения SCHEMABINDING , не могут быть отброшены , если это представление не будет удалено или изменено так, что оно больше не имеет привязки схемы. В противном случае компонент Database Engine выдает ошибку. Кроме того, выполнение операторов ALTER TABLE для таблиц, которые участвуют в представлениях, имеющих привязку схемы, завершается ошибкой , когда эти операторы влияют на определение представления.

4
ответ дан 2 December 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: