sys.dm_exec_describe_first_result_set(Transact-SQL)

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

이 동적 관리 함수는 Transact-SQL 문을 매개 변수로 사용하고 문에 대한 첫 번째 결과 집합의 메타데이터를 설명합니다.

sys.dm_exec_describe_first_result_set sys.dm_exec_describe_first_result_set_for_object(Transact-SQL)와 동일한 결과 집합 정의를 가지고 있으며 sp_describe_first_result_set(Transact-SQL)와 비슷합니다.

Transact-SQL 구문 표기 규칙

구문

  
sys.dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)  

인수

@tsql
하나 이상의 Transact-SQL 문입니다. Transact-SQL_batch nvarchar(n) 또는 nvarchar(max)일 수 있습니다.

@params
@params sp_executesql 유사하게 Transact-SQL 일괄 처리에 대한 매개 변수에 대한 선언 문자열을 제공합니다. 매개 변수는 nvarchar(n) 또는 nvarchar(max)일 수 있습니다.

Transact-SQL_batch 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 문자열은 유니코드 상수 또는 유니코드 변수여야 합니다. 각 매개 변수 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n 은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. stmt에 지정된 모든 매개 변수는 @params 정의해야 합니다. 문의 Transact-SQL 문 또는 일괄 처리에 매개 변수가 없는 경우 @params 필요하지 않습니다. NULL이 이 매개 변수의 기본값입니다.

@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 열이 고유 인덱스의 일부일 경우(UNIQUE 및 PRIMARY KEY 제약 조건 포함) 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 이 열의 ihe 위치는 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_TYPE_NOT_SUPPORTED 함수에 전달된 @object_id 지원되지 않습니다(즉, 저장 프로시저 아님).
13 OBJECT_DOES_NOT_EXIST 함수에 전달된 @object_id 시스템 카탈로그에서 찾을 수 없습니다.

사용 권한

@tsql 인수를 실행할 수 있는 권한이 필요합니다.

항목 sp_describe_first_result_set(Transact-SQL)의 추가 예제는 sys.dm_exec_describe_first_result_set 사용하도록 조정할 수 있습니다.

A. 단일 Transact-SQL 문에 대한 정보 반환

다음 코드는 Transact-SQL 문의 결과에 대한 정보를 반환합니다.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_exec_describe_first_result_set  
(N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0) ;  

B. 프로시저에 대한 정보 반환

다음 예제에서는 두 개의 결과 집합을 반환하는 pr_TestProc 저장 프로시저를 만듭니다. 그런 다음 이 예제에서는 sys.dm_exec_describe_first_result_set 프로시저의 첫 번째 결과 집합에 대한 정보를 반환하는 방법을 보여 줍니다.

USE AdventureWorks2022;  
GO  
  
CREATE PROC Production.TestProc  
AS  
SELECT Name, ProductID, Color FROM Production.Product ;  
SELECT Name, SafetyStockLevel, SellStartDate FROM Production.Product ;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set  
('Production.TestProc', NULL, 0) ;  

C. 여러 문이 포함된 일괄 처리에서 메타데이터 반환

다음 예제에서는 두 Transact-SQL 문이 포함된 일괄 처리를 평가합니다. 결과 집합은 반환된 첫 번째 결과 집합을 설명합니다.

USE AdventureWorks2022;  
GO  
  
SELECT * FROM sys.dm_exec_describe_first_result_set(  
N'SELECT CustomerID, TerritoryID, AccountNumber FROM Sales.Customer WHERE CustomerID = @CustomerID;  
SELECT * FROM Sales.SalesOrderHeader;',  
N'@CustomerID int', 0) AS a;  
GO  

참고 항목

sp_describe_first_result_set(Transact-SQL)
sp_describe_undeclared_parameters(Transact-SQL)
sys.dm_exec_describe_first_result_set_for_object(Transact-SQL)