sys.dm_exec_describe_first_result_set_for_object(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이 동적 관리 함수는 @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)와 비슷합니다.

Transact-SQL 구문 표기 규칙

구문

  
sys.dm_exec_describe_first_result_set_for_object   
    ( @object_id , @include_browse_information )  

인수

@object_id
@object_id Transact-SQL 저장 프로시저 또는 Transact-SQL 트리거의 @object_id 는 int 형식 입니다.

@include_browse_information
@include_browse_information 는 형식 비트입니다. 1로 설정하면 쿼리에 FOR BROWSE 옵션이 있는 것처럼 각 쿼리가 분석됩니다. 추가 키 열 및 원본 테이블 정보를 반환합니다.

반환된 테이블

이 일반적인 메타데이터는 결과 메타데이터의 각 열에 대해 하나의 행이 있는 결과 집합으로 반환됩니다. 각 행은 다음 섹션에 설명된 형식으로 열의 유형과 Null 허용 여부를 설명합니다. 모든 컨트롤 경로에 대해 첫 번째 문이 없으면 행이 0인 결과 집합이 반환됩니다.

열 이름 데이터 형식 설명
is_hidden bit 해당 열이 정보 검색을 목적으로 추가되어 실제로 결과 집합에 나타나지 않는 별도의 열인지 여부를 지정합니다.
column_ordinal int 결과 집합에 있는 열의 서수 위치를 포함합니다. 첫 번째 열의 위치가 1로 지정됩니다.
이름 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) 데이터 형식 이름을 포함합니다. 열의 데이터 형식에 지정된 인수(예: 길이, 정밀도, 소수 자릿수)를 포함합니다. 데이터 형식이 사용자 정의 별칭 형식인 경우 기본 시스템 형식이 여기에 지정됩니다. CLR 사용자 정의 형식인 경우 이 열에 NULL이 반환됩니다.
max_length smallint 열의 최대 길이(바이트)입니다.

-1 = 열 데이터 형식이 varchar(max), nvarchar(max), varbinary(max) 또는 xml입니다.

텍스트 열의 경우 max_length 값은 16 또는 sp_tableoption ‘text in row’에 의해 설정된 값입니다.
전체 자릿수 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 열이 고유 인덱스(고유 및 기본 제약 조건 포함)의 일부인 경우 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 기타 달리 설명되지 않은 모든 오류입니다.
2 구문 일괄 처리에서 구문 오류가 발생했습니다.
3 CONFLICTING_RESULTS 두 개의 가능한 첫 번째 문 간의 충돌로 인해 결과를 확인할 수 없습니다.
4 DYNAMIC_SQL 첫 번째 결과를 반환할 수 있는 동적 SQL로 인해 결과를 확인할 수 없습니다.
5 CLR_PROCEDURE CLR 저장 프로시저가 첫 번째 결과를 반환할 수 있으므로 결과를 확인할 수 없습니다.
6 CLR_TRIGGER CLR 트리거가 잠재적으로 첫 번째 결과를 반환할 수 있으므로 결과를 확인할 수 없습니다.
7 EXTENDED_PROCEDURE 확장 저장 프로시저가 잠재적으로 첫 번째 결과를 반환할 수 있으므로 결과를 확인할 수 없습니다.
8 UNDECLARED_PARAMETER 하나 이상의 결과 집합 열의 데이터 형식이 선언되지 않은 매개 변수에 따라 달라지므로 결과를 확인할 수 없습니다.
9 재귀 일괄 처리에 재귀 문이 포함되어 있으므로 결과를 확인할 수 없습니다.
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 수 있는 권한이 필요합니다.

A. 찾아보기 정보가 있는 메타데이터와 찾아보기 정보가 없는 메타데이터 반환

다음 예제에서는 두 개의 결과 집합을 반환하는 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  

B. sys.dm_exec_describe_first_result_set_for_object 함수와 테이블 또는 뷰 결합

다음 예제에서는 sys.procedures 시스템 카탈로그 뷰와 sys.dm_exec_describe_first_result_set_for_object 함수를 모두 사용하여 데이터베이스에 있는 모든 저장 프로시저의 결과 집합에 대한 메타데이터를 AdventureWorks2022 표시합니다.

USE AdventureWorks2022;  
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)
sp_describe_undeclared_parameters(Transact-SQL)
sys.dm_exec_describe_first_result_set(Transact-SQL)