문제

'새로 고침보기'스크립트를 작성 해야하는 이유, 일부 필드를보기에 추가하거나 편집 할 때마다 실행합니까?

SQL Server는 Management Studio의 멋진 View-Edit Windows에서 편집 할 때보기를 새로 고침해야한다는 것을 이해합니다. 왜 스크립트를 통해보기를 편집 한 후에도 자체적으로 보이도록보기를 할 수없는 이유는 무엇입니까?

도움이 되었습니까?

해결책

기본 테이블이 전혀 변경되면 뷰를 새로 고쳐야합니다. 이는보기 열의 데이터 유형을 변경하거나 인덱스를 재 배열 할 수 있습니다. 따라서 알아야합니다. 그렇지 않으면, 당신은 그것에 대해 쿼리를 실행하고, 그것은 꽤 빨리 폭파 될 것입니다.

당신은 달릴 필요가 없습니다 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

다른 팁

사용 스키 메이드와 함께 새로 고침의 필요성을 제거하기위한보기 정의에서

그리고 디자이너가 아닌 Alter View와 함께

위의 링크에서 2012 년 7 월 편집. 내 대담한

스키 메이드

기본 테이블 또는 테이블의 스키마에 뷰를 바인딩합니다. Schemabinding이 지정되면 기본 테이블 또는 테이블 보기 정의에 영향을 미치는 방식으로 수정할 수 없습니다.. 뷰 정의 자체는 먼저 수정 될 테이블의 종속성을 제거하려면 먼저 수정되거나 삭제되어야합니다. schemabinding을 사용하는 경우 select_statement에는 참조 된 테이블, 뷰 또는 사용자 정의 함수의 두 부분으로 된 이름 (schema.object)이 포함되어야합니다. 모든 참조 된 객체는 동일한 데이터베이스에 있어야합니다.

Schemabinding 조항으로 생성 된 견해에 참여하는보기 또는 테이블 떨어질 수 없습니다 더 이상 스키마 바인딩이 없도록 그 뷰가 삭제되거나 변경되지 않는 한. 그렇지 않으면 데이터베이스 엔진에 오류가 발생합니다. 또한 실행 스키마 바인딩 실패가있는 뷰에 참여하는 테이블에 대한 테이블 문장 변경 이 진술이보기 정의에 영향을 미치는 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top