sp_refreshview(Transact-SQL)
비스키마 바운드 뷰에 대한 메타데이터를 업데이트합니다. 뷰가 종속된 기본 개체가 변경되면 뷰의 영구 메타데이터가 최신 상태를 유지하지 못할 수 있습니다.
구문
sp_refreshview [ @viewname = ] 'viewname'
인수
- [ @viewname= ] 'viewname'
뷰의 이름입니다. viewname은 nvarchar이며 기본값은 없습니다. viewname은 다중 부분 식별자가 될 수 있지만 현재 데이터베이스의 뷰만 참조할 수 있습니다.
반환 코드 값
0(성공) 또는 0이 아닌 수(실패)
주의
스키마 바인딩을 사용하여 뷰를 만들지 않은 경우 뷰의 기반이 되는 개체에 대한 변경 내용이 뷰의 정의에 영향을 주면 sp_refreshview를 실행해야 합니다. 그렇지 않으면 뷰를 쿼리할 때 예기치 않은 결과가 발생할 수 있습니다.
사용 권한
뷰에 대한 ALTER 권한이 필요하고 뷰 열이 참조하는 CLR(공용 언어 런타임) 사용자 정의 형식 및 XML 스키마 컬렉션에 대한 REFERENCES 권한이 필요합니다.
예
1.뷰의 메타데이터 업데이트
다음 예에서는 Sales.vIndividualCustomer 뷰의 메타데이터를 새로 고칩니다.
USE AdventureWorks2012;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
2.변경한 개체에 대해 종속성이 있는 뷰를 모두 업데이트하는 스크립트 만들기
Person.Person 테이블이 해당 테이블에서 생성된 모든 뷰의 정의에 영향을 주는 방식으로 변경되었다고 가정합니다. 다음 예에서는 Person.Person 테이블에 대해 종속성이 있는 모든 뷰의 메타데이터를 새로 고치는 스크립트를 만듭니다.
USE AdventureWorks2012;
GO
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + ''''
FROM sys.objects AS so
INNER JOIN sys.sql_expression_dependencies AS sed
ON so.object_id = sed.referencing_id
WHERE so.type = 'V' AND sed.referenced_id = OBJECT_ID('Person.Person');
참고 항목
참조
데이터베이스 엔진 저장 프로시저(Transact-SQL)