Прежде всего, вам не нужно ничего изменять в представлении. Любые изменения в соответствующей таблице автоматически отразятся в вашем представлении.
Если нет, это может быть связано с тем, что если представление не создается с помощью schemabinding
, sp_refreshview
следует запускать при внесении изменений в объекты, лежащие в основе представления, которые влияют на определение представления. В противном случае представление может привести к неожиданным результатам при запросе. ТАК, как предложил @Ralf, я +1 к этому ответу, используйте sp_refreshview
для обновления представления.
Для вашего комментария ALTER TABLE ALTER COLUMN Company failed because one or more objects access this column.
Это связано с тем, что какое-то ограничение или индекс использует этот столбец, вы должны сначала удалить его, а затем только вы сможете изменить этот столбец.
Вы можете найти связанное ограничение, используя запрос:
select db_name() as CONSTRAINT_CATALOG
,t_obj.name as TABLE_NAME
,user_name(c_obj.uid) as CONSTRAINT_SCHEMA
,c_obj.name as CONSTRAINT_NAME
,col.name as COLUMN_NAME
,col.colid as ORDINAL_POSITION
,com.text as DEFAULT_CLAUSE
from sysobjects c_obj
join syscomments com on c_obj.id = com.id
join sysobjects t_obj on c_obj.parent_obj = t_obj.id
join sysconstraints con on c_obj.id = con.constid
join syscolumns col on t_obj.id = col.id
and con.colid = col.colid
where
c_obj.uid = user_id()
Отбросьте любой индекс и/или ограничение для столбца, а затем попробуйте изменить, тогда он должен работать.
Также см. ответы на этот вопрос Сервер 2008)
Надеюсь, поможет.
person
Pranav Singh
schedule
12.06.2014