다음을 통해 공유


sp_refreshview(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric의 SQL 데이터베이스

지정된 스키마 바인딩되지 않은 뷰에 대한 메타데이터를 업데이트합니다. 뷰가 종속된 기본 개체가 변경되면 뷰의 영구 메타데이터가 최신 상태를 유지하지 못할 수 있습니다.

Transact-SQL 구문 표기 규칙

구문

sp_refreshview [ @viewname = ] 'viewname'
[ ; ]

인수

[ @viewname = ] '뷰네임'

보기의 이름입니다. @viewname 기본값이 없는 nvarchar입니다. @viewname 다중 파트 식별자일 수 있지만 현재 데이터베이스의 뷰만 참조할 수 있습니다.

반환 코드 값

0(성공) 또는 0이 아닌 숫자(실패).

설명

뷰가 생성 SCHEMABINDINGsp_refreshview 되지 않은 경우, 뷰의 정의에 영향을 주는 객체에 변경이 있을 때 실행해야 합니다. 그렇지 않으면 뷰를 쿼리할 때 예상치 못한 결과가 나올 수 있습니다.

사용 권한

뷰에 대한 권한과 ALTER 뷰 열이 참조하는 공통 언어 런타임(CLR) 사용자 정의 타입 및 XML 스키마 컬렉션에 대한 권한이 필요합니다REFERENCES.

예제

이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.

A. 보기의 메타데이터 업데이트

다음 예에서는 Sales.vIndividualCustomer 뷰의 메타데이터를 새로 고칩니다.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. 변경된 개체에 대한 종속성이 있는 모든 뷰를 업데이트하는 스크립트 만들기

테이블 Person.Person 이 생성된 뷰의 정의에 영향을 주는 방식으로 변경되었다고 가정합니다. 다음 예제에서는 테이블에 Person.Person종속성이 있는 모든 보기에 대한 메타데이터를 새로 고치는 스크립트를 만듭니다.

USE AdventureWorks2025;
GO

SELECT DISTINCT 'EXECUTE 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');