sys.dm_exec_describe_first_result_set_for_object(Transact-SQL)
이 동적 관리 함수는 @object\_id를 매개 변수로 간주하고 해당 ID를 가진 모듈의 첫 번째 결과 메타데이터를 설명합니다. 지정된 @object\_id는 Transact-SQL 저장 프로시저 또는 Transact-SQL 트리거의 ID일 수 있습니다. 그 밖에 다른 개체(예: 뷰, 테이블, 함수 또는 CLR 프로시저)의 ID인 경우에는 결과의 오류 열에 오류가 지정됩니다.
sys.dm_exec_describe_first_result_set_for_object는 sys.dm_exec_describe_first_result_set(Transact-SQL)와 결과 집합 정의가 동일하며 sp_describe_first_result_set(Transact-SQL)와 비슷합니다.
구문
sys.dm_exec_describe_first_result_set_for_object
( @object_id , @include_browse_information )
인수
@object\_id
Transact-SQL 저장 프로시저 또는 Transact-SQL 트리거의 @object\_id입니다. @object\_id는 int 형식입니다.@include\_browse\_information
@include\_browse\_information은 bit 형식입니다. 1으로 설정되면 쿼리에 FOR BROWSE 옵션이 있는 것처럼 각 쿼리가 분석됩니다. 추가 키 열과 원본 테이블 정보를 반환합니다.
반환 테이블
이 공통 메타데이터는 결과 메타데이터의 각 열에 대한 하나의 행이 포함된 결과 집합으로 반환됩니다. 각 행은 다음 섹션에 설명된 형식으로 열의 유형과 Null 허용 여부를 설명합니다. 모든 제어 경로에 대해 첫째 문이 없을 경우 행이 0개인 결과 집합이 반환됩니다.
열 이름 |
데이터 형식 |
설명 |
---|---|---|
is_hidden |
bit |
해당 열이 정보 검색을 목적으로 추가되어 실제로 결과 집합에 나타나지 않는 별도의 열인지 여부를 지정합니다. |
column_ordinal |
int |
결과 집합에서 열의 서수 위치를 포함합니다. 첫 번째 열의 위치가 1로 지정됩니다. |
name |
sysname |
이름을 확인할 수 있으면 열 이름을 포함하고 그렇지 않으면 NULL입니다. |
is_nullable |
bit |
열이 NULL을 허용하는 경우 1, 열이 NULL을 허용하지 않는 경우 0, 열이 NULL을 허용하는지 확인할 수 없는 경우 1을 포함합니다. |
system_type_id |
int |
sys.types에 지정된 대로 열 데이터 형식의 system_type_id를 포함합니다. CLR 형식의 경우 system_type_name 열에서 NULL을 반환해도 이 열은 값 240을 반환합니다. |
system_type_name |
nvarchar(256) |
데이터 형식 이름을 포함합니다. 열의 데이터 형식에 지정된 인수(length, precision, scale 등)를 포함합니다. 데이터 형식이 사용자 정의 별칭 형식인 경우 기본 시스템 형식이 여기에 지정됩니다. 데이터 형식이 CLR 사용자 정의 형식인 경우 이 열에 NULL이 반환됩니다. |
max_length |
smallint |
열의 최대 길이(바이트)입니다. -1 = 열 데이터 형식이 varchar(max), nvarchar(max), varbinary(max) 또는 xml입니다. text 열의 경우 max_length 값은 16 또는 sp_tableoption 'text in row'에서 설정한 값이 됩니다. |
precision |
tinyint |
숫자 기반일 경우 열의 전체 자릿수이고 그렇지 않으면 0을 반환합니다. |
scale |
tinyint |
숫자 기반일 경우 열의 소수 자릿수이고 그렇지 않으면 0을 반환합니다. |
collation_name |
sysname |
문자 기반일 경우 열의 데이터 정렬 이름이고 그렇지 않으면 NULL을 반환합니다. |
user_type_id |
int |
CLR 및 별칭 형식의 경우 sys.types에 지정된 대로 열 데이터 형식의 user_type_id를 포함합니다. 그렇지 않으면 NULL입니다. |
user_type_database |
sysname |
CLR 및 별칭 형식의 경우 해당 형식이 정의된 데이터베이스의 이름을 포함합니다. 그렇지 않으면 NULL입니다. |
user_type_schema |
sysname |
CLR 및 별칭 형식의 경우 해당 형식이 정의된 스키마의 이름을 포함합니다. 그렇지 않으면 NULL입니다. |
user_type_name |
sysname |
CLR 및 별칭 형식의 경우 형식 이름입니다. 그렇지 않으면 NULL입니다. |
assembly_qualified_type_name |
nvarchar(4000) |
CLR 형식의 경우 형식을 정의하는 어셈블리 및 클래스 이름을 반환합니다. 그렇지 않으면 NULL입니다. |
xml_collection_id |
int |
sys.columns에 지정된 대로 열 데이터 형식의 xml_collection_id를 포함합니다. 반환된 형식이 XML 스키마 데이터 컬렉션과 연결되지 않은 경우 이 열은 NULL을 반환합니다. |
xml_collection_database |
sysname |
이 형식과 연결된 XML 스키마 컬렉션이 정의된 데이터베이스를 포함합니다. 반환된 형식이 XML 스키마 데이터 컬렉션과 연결되지 않은 경우 이 열은 NULL을 반환합니다. |
xml_collection_schema |
sysname |
이 형식과 연결된 XML 스키마 컬렉션이 정의된 스키마를 포함합니다. 반환된 형식이 XML 스키마 데이터 컬렉션과 연결되지 않은 경우 이 열은 NULL을 반환합니다. |
xml_collection_name |
sysname |
이 형식과 연결된 XML 스키마 컬렉션 이름을 포함합니다. 반환된 형식이 XML 스키마 컬렉션과 연결되지 않은 경우 이 열은 NULL을 반환합니다. |
is_xml_document |
bit |
반환된 데이터 형식이 XML이고 해당 형식이 XML 조각이 아닌 완전한 XML 문서(루트 노드 포함)라고 보장될 경우 1을 반환합니다. 그렇지 않으면 0을 반환합니다. |
is_case_sensitive |
bit |
열이 대/소문자를 구분하는 문자열 형식인 경우 1을 반환하고 그렇지 않으면 0을 반환합니다. |
is_fixed_length_clr_type |
bit |
열이 고정 길이 CLR 형식인 경우 1을 반환하고 그렇지 않으면 0을 반환합니다. |
source_server |
sysname |
이 결과에서 열이 반환한 원본 서버의 이름입니다(원본이 원격 서버인 경우). 이름은 sys.servers에 표시된 대로 지정됩니다. 열의 원본이 로컬 서버이거나 원본 서버를 확인할 수 없는 경우 NULL을 반환합니다. 정보 검색을 요청할 경우에만 채워집니다. |
source_database |
sysname |
이 결과에서 열이 반환한 원본 데이터베이스 이름입니다. 데이터베이스를 확인할 수 없는 경우 NULL을 반환합니다. 정보 검색을 요청할 경우에만 채워집니다. |
source_schema |
sysname |
이 결과에서 열이 반환한 원본 스키마 이름입니다. 스키마를 확인할 수 없는 경우 NULL을 반환합니다. 정보 검색을 요청할 경우에만 채워집니다. |
source_table |
sysname |
이 결과에서 열이 반환한 원본 테이블 이름입니다. 테이블을 확인할 수 없는 경우 NULL을 반환합니다. 정보 검색을 요청할 경우에만 채워집니다. |
source_column |
sysname |
이 결과에서 열이 반환한 원본 열 이름입니다. 열을 확인할 수 없는 경우 NULL을 반환합니다. 정보 검색을 요청할 경우에만 채워집니다. |
is_identity_column |
bit |
열이 ID 열일 경우 1을 반환하고 그렇지 않으면 0을 반환합니다. 열이 ID 열인지 확인할 수 없으면 NULL을 반환합니다. |
is_part_of_unique_key |
bit |
열이 고유 인덱스의 일부일 경우(unique 및 primary 제약 조건 포함) 1을 반환하고 그렇지 않으면 0을 반환합니다. 열이 고유 인덱스의 일부인지 확인할 수 없으면 NULL을 반환합니다. 정보 검색을 요청할 경우에만 채워집니다. |
is_updateable |
bit |
열이 업데이트 가능할 경우 1을 반환하고 그렇지 않으면 0을 반환합니다. 열이 업데이트 가능한지 확인할 수 없으면 NULL을 반환합니다. |
is_computed_column |
bit |
열이 계산 열일 경우 1을 반환하고 그렇지 않으면 0을 반환합니다. 열이 계산 열인지 확인할 수 없으면 NULL을 반환합니다. |
is_sparse_column_set |
bit |
열이 스파스 열일 경우 1을 반환하고 그렇지 않으면 0을 반환합니다. 열이 스파스 열 집합의 일부인지 확인할 수 없으면 NULL을 반환합니다. |
ordinal_in_order_by_list |
smallint |
이 열의 위치가 ORDER BY 목록에 있습니다. 열이 ORDER BY 목록에 없거나 ORDER BY 목록을 고유하게 확인할 수 없을 경우 NULL을 반환합니다. |
order_by_list_length |
smallint |
ORDER BY 목록의 길이입니다. ORDER BY 목록이 없거나 ORDER BY 목록을 고유하게 확인할 수 없는 경우 NULL을 반환합니다. sp_describe_first_result_set가 반환하는 모든 열에 대해 이 값이 동일합니다. |
order_by_is_descending |
smallint NULL |
ordinal_in_order_by_list가 NULL이 아닐 경우 order_by_is_descending 열에서 이 열에 대한 ORDER BY 절의 방향을 보고합니다. 그렇지 않으면 NULL을 보고합니다. |
error_number |
int |
함수가 반환한 오류 번호를 포함합니다. 오류가 발생하지 않은 경우 열에 NULL을 포함합니다. |
error_severity |
int |
함수가 반환한 심각도를 포함합니다. 오류가 발생하지 않은 경우 열에 NULL을 포함합니다. |
error_state |
int |
함수가 반환한 상태 메시지를 포함합니다. 오류가 발생하지 않은 경우 열에 NULL이 포함됩니다. |
error_message |
nvarchar(4096) |
함수가 반환한 메시지를 포함합니다. 오류가 발생하지 않은 경우 열에 NULL이 포함됩니다. |
error_type |
int |
반환할 오류를 나타내는 정수를 포함합니다. error_type_desc에 매핑됩니다. 주의 아래의 목록을 참조하십시오. |
error_type_desc |
nvarchar(60) |
반환할 오류를 나타내는 간단한 대문자 문자열을 포함합니다. error_type에 매핑됩니다. 주의 아래의 목록을 참조하십시오. |
주의
이 함수는 sp_describe_first_result_set와 동일한 알고리즘을 사용합니다. 자세한 내용은 sp_describe_first_result_set(Transact-SQL)를 참조하십시오.
다음 표에서는 오류 유형 및 설명을 나열합니다.
error_type |
error_type |
설명 |
---|---|---|
1 |
MISC |
설명하지 않은 모든 오류입니다. |
2 |
SYNTAX |
일괄 처리에 발생한 구문 오류입니다. |
3 |
CONFLICTING_RESULTS |
가능한 두 개의 첫 번째 문 사이에 충돌이 발생하여 결과를 확인할 수 없습니다. |
4 |
DYNAMIC_SQL |
첫 번째 결과를 반환할 수 있는 동적 SQL로 인해 결과를 확인할 수 없습니다. |
5 |
CLR_PROCEDURE |
CLR 저장 프로시저가 첫 번째 결과를 반환할 수 있으므로 결과를 확인할 수 없습니다. |
6 |
CLR_TRIGGER |
CLR 트리거가 첫 번째 결과를 반환할 수 있으므로 결과를 확인할 수 없습니다. |
7 |
EXTENDED_PROCEDURE |
확장 저장 프로시저가 첫 번째 결과를 반환할 수 있으므로 결과를 확인할 수 없습니다. |
8 |
UNDECLARED_PARAMETER |
결과 집합의 열 중 하나 이상의 데이터 형식이 선언되지 않은 매개 변수에 의해 결정될 수 있으므로 결과를 확인할 수 없습니다. |
9 |
RECURSION |
일괄 처리에 재귀 문이 포함되어 있어 결과를 확인할 수 없습니다. |
10 |
TEMPORARY_TABLE |
일괄 처리에 임시 테이블이 포함되고 sp_describe_first_result_set에서 일괄 처리를 지원하지 않으므로 결과를 확인할 수 없습니다. |
11 |
UNSUPPORTED_STATEMENT |
sp_describe_first_result_set에서 지원하지 않는 문(예: FETCH, REVERT 등)이 일괄 처리에 포함되어 있어 결과를 확인할 수 없습니다. |
12 |
OBJECT_ID_NOT_SUPPORTED |
함수에 전달된 @object_id가 지원되지 않습니다(예: 저장 프로시저가 아님). |
13 |
OBJECT_ID_DOES_NOT_EXIST |
함수에 전달된 @object_id를 시스템 카탈로그에서 찾지 못했습니다. |
사용 권한
@tsql 인수를 실행할 사용 권한이 필요합니다.
예
1.찾아보기 정보가 있는 메타데이터와 찾아보기 정보가 없는 메타데이터 반환
다음 예에서는 결과 집합 두 개를 반환하는 TestProc2 저장 프로시저를 만듭니다. 그런 다음 sys.dm_exec_describe_first_result_set가 프로시저의 첫 번째 결과 집합(찾아보기 정보가 있는 결과 집합과 찾아보기 정보가 없는 결과 집합)에 대한 정보를 반환하는 것을 보여 줍니다.
CREATE PROC TestProc2
AS
SELECT object_id, name FROM sys.objects ;
SELECT name, schema_id, create_date FROM sys.objects ;
GO
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 0) ;
SELECT * FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('TestProc2'), 1) ;
GO
2.sys.dm_exec_describe_first_result_set_for_object 함수와 테이블 또는 뷰 결합
다음 예에서는 sys.procedures 시스템 카탈로그 뷰와 sys.dm_exec_describe_first_result_set_for_object 함수를 둘 다 사용하여 AdventureWorks2012 데이터베이스에 있는 모든 저장 프로시저의 결과 집합에 대한 메타데이터를 표시합니다.
USE AdventureWorks2012;
GO
SELECT p.name, r.*
FROM sys.procedures AS p
CROSS APPLY sys.dm_exec_describe_first_result_set_for_object(p.object_id, 0) AS r;
GO
참고 항목
참조
sp_describe_first_result_set(Transact-SQL)