sys.dm_db_uncontained_entities(Transact-SQL)
데이터베이스에 사용된 포함되지 않은 개체를 표시합니다. 포함되지 않은 개체는 포함된 데이터베이스의 데이터베이스 경계를 넘는 개체입니다. 이 뷰는 포함된 데이터베이스와 포함되지 않은 데이터베이스 모두에서 액세스할 수 있습니다. sys.dm_db_uncontained_entities가 비어 있는 경우에는 데이터베이스에서 포함되지 않은 엔터티를 사용하지 않습니다.
모듈이 데이터베이스 경계를 두 번 이상 교차한 경우 처음에 발견된 교차만 보고됩니다.
열 이름 |
유형 |
설명 |
class |
int |
1 = 개체 또는 열(모듈, XP, 뷰, 동의어 및 테이블 포함) 4 = 데이터베이스 보안 주체 5 = 어셈블리 6 = 형식 7 = 인덱스(전체 텍스트 인덱스) 12 = 데이터베이스 DDL 트리거 19 = 경로 30 = 감사 사양 |
class_desc |
nvarchar(120) |
엔터티의 클래스에 대한 설명입니다. 다음 중 하나에 해당합니다.
|
major_id |
int |
엔터티의 ID입니다. class = 1이면 object_id class = 4이면 sys.database_principals.principal_id class = 5이면 sys.assemblies.assembly_id class = 6이면 sys.types.user_type_id class = 7이면 sys.indexes.index_id class = 12이면 sys.triggers.object_id |
statement_line_number |
int |
클래스가 모듈인 경우 포함되지 않은 용도가 있는 줄 번호를 반환합니다. 그렇지 않으면 값이 Null입니다. |
statement_ offset_begin |
int |
클래스가 모듈인 경우 포함되지 않은 용도의 시작 위치(0으로 시작되는 바이트)를 나타냅니다. 그렇지 않으면 반환 값이 Null입니다. |
statement_ offset_end |
int |
클래스가 모듈인 경우 포함되지 않은 용도의 끝 위치(0으로 시작되는 바이트)를 나타냅니다. 값이 -1인 경우 모듈의 끝을 나타냅니다. 그렇지 않으면 반환 값이 Null입니다. |
statement_type |
nvarchar(512) |
문의 유형입니다. |
feature_ name |
nvarchar(256) |
개체의 외부 이름을 반환합니다. |
feature_type_name |
nvarchar(256) |
기능의 유형을 반환합니다. |
주의
sys.dm_db_uncontained_entities는 잠재적으로 데이터베이스 경계를 넘을 수 있는 엔터티를 표시합니다. 즉, 데이터베이스 외부 개체를 사용할 가능성이 있는 사용자 엔터티를 반환합니다.
다음 기능 유형이 보고됩니다.
알 수 없는 포함 경계(동적 SQL 또는 지연된 이름 확인)
DBCC 명령
시스템 저장 프로시저
시스템 스칼라 함수
시스템 테이블 반환 함수
시스템 기본 제공 함수
보안
사용 권한
sys.dm_db_uncontained_entities는 특정 유형의 권한을 가진 사용자에 대해서만 개체를 반환합니다. 데이터베이스의 포함을 완전하게 평가하려면 sysadmin 고정 서버 역할 또는 db_owner 역할의 멤버와 같은 권한이 높은 사용자가 이 함수를 사용해야 합니다.
예
다음 예에서는 P1이라는 프로시저를 만든 다음 sys.dm_db_uncontained_entities 쿼리를 만듭니다. 이 쿼리는 P1에서 데이터베이스 외부에 있는 sys.endpoints를 사용하는 것을 보고합니다.
CREATE DATABASE Test;
GO
USE Test;
GO
CREATE PROC P1
AS
SELECT * FROM sys.endpoints ;
GO
SELECT SO.name, UE.* FROM sys.dm_db_uncontained_entities AS UE
LEFT JOIN sys.objects AS SO
ON UE.major_id = SO.object_id;