sys.dm_exec_describe_first_result_set(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure 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)와 비슷합니다.
구문
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)