Как я могу заставить представление отображать текущее определение столбца?

Использование SQL Server Express 2008 и Management Studio.

У меня есть стол и вид. Во время создания представления столбец FirstName таблицы был varchar (50). Измените Table.Firstname на nvarchar (50), и View по-прежнему указывает, что столбец - varchar (50).

Как заставить представление отображать текущее определение столбца?

Вот что я пробовал (это не сработало):

  • Нажмите кнопку "Обновить".
  • Закройте Management Studio и снова откройте ее.

Вот что сработало:

  • Создайте совершенно новый вид. В новом представлении отображается текущее определение поля.

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


person Mark Maslar    schedule 09.12.2010    source источник


Ответы (2)


Найдите sys.sp_refreshsqlmodule в электронной документации.

person HLGEM    schedule 09.12.2010
comment
Спасибо! В этом конкретном случае sp_refreshsqlmodule хорошо работает для представлений, которые были созданы без использования SCHEMABINDING. например EXEC sys.sp_refreshsqlmodule 'myDatabase.dbo.myView1' - person Mark Maslar; 10.12.2010

Запустите sp_refreshview или более новую версию sp_refreshsqlmodule

Лучшее решение - использовать WITH SCHEMABINDING, чтобы этого не произошло.

Довольно часто встречается в SO, например, здесь

person gbn    schedule 09.12.2010