다음을 통해 공유


sp_refreshview(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

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

인수

[ @viewname = ] 'viewname'

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

반환 코드 값

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

설명

SCHEMABINDING sp_refreshview 을 사용하여 뷰를 만들지 않은 경우 뷰의 정의에 영향을 미치는 뷰의 기본 개체를 변경할 때 실행해야 합니다. 그렇지 않으면 뷰가 쿼리될 때 예기치 않은 결과를 생성할 수 있습니다.

사용 권한

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

예제

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

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

USE AdventureWorks2022;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

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

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

USE AdventureWorks2022;
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');