우선 무엇이든 수정할 필요가 없습니다. 해당 표의 모든 변경 사항은 귀하의 견해에 자동으로 반영됩니다.
그렇지 않은 경우보기가 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()
후 변경하려고 열 &에 어떤 인덱스 및/또는 제약 조건을 삭제, 그 다음 작업을해야합니다.
또한 Drop a column from table problem (SQL Server 2008)
는 희망이 도움이 질문에 대한 답변을 참조하십시오.
뷰는 단순히 하나 이상의 테이블에있는 데이터 뷰이므로보기의 데이터 유형을 변경할 필요가 없습니다. 자동으로 수행됩니다. – duDE
아니요, 그렇게하지 않으려합니다. – podiluska
고마워, :) 테이블을 변경하는 동안 "ALTER TABLE ALTER COLUMN 회사가 하나 이상의 개체가이 열에 액세스하여 오류가 발생했습니다.",이 종속성을 사용하지 않도록 설정 한 후 다시 되돌릴 수있는 코드를 작성할 수 있습니까? – sumit