적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
이 동적 관리 함수는 Transact-SQL 문장을 매개변수로 받아 문장의 첫 번째 결과 집합에 대한 메타데이터를 반환합니다.
sys.dm_exec_describe_first_result_set
sys.dm_exec_describe_first_result_set_for_object와 동일한 결과 집합 정의를 반환하며 sp_describe_first_result_set와 유사합니다.
구문
sys.dm_exec_describe_first_result_set(@tsql , @params , @include_browse_information)
인수
@tsql
하나 이상의 Transact-SQL 문입니다. @tsql 배치는 nvarchar(n) 또는 nvarchar(max)일 수 있습니다.
@params
@params Transact-SQL 배치 sp_executesql의 매개변수에 대한 선언 문자열을 제공합니다. 매개변수는 nvarchar(n) 또는 nvarchar(max)일 수 있습니다.
@tsql 배치에 내장된 모든 매개변수의 정의를 포함하는 단일 문자열입니다. 문자열은 유니코드 상수 또는 유니코드 변수여야 합니다. 각 매개 변수 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다.
n 은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. stmt에서 지정된 모든 매개변수는 @params에서 정의되어야 합니다. 문의 Transact-SQL 문 또는 일괄 처리에 매개 변수 가 포함되어 있지 않으면 @params 필요하지 않습니다.
NULL 는 이 매개 변수의 기본값입니다.
@include_browse_information
1로 설정하면 각 쿼리는 쿼리에 옵션이 있는 FOR BROWSE 것처럼 분석됩니다. 결과적으로 추가 키 열과 소스 테이블 정보가 추가됩니다.
반환된 테이블
이 함수는 이 공통 메타데이터를 결과 집합으로 반환합니다. 각 행은 결과 메타데이터의 열에 해당하며, 다음 표에 표시된 형식에서 열의 유형과 공무성 상태를 설명합니다. 만약 첫 번째 문장이 모든 제어 경로에 존재하지 않는다면, 함수는 행이 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) | 열의 데이터 형식에 대해 지정된 이름 및 인수(예: 길이, 정밀도, 소수 자릿수)를 포함합니다. 데이터 형식이 사용자 정의 별칭 형식인 경우 기본 시스템 형식이 여기에 지정됩니다. 데이터 타입이 CLR 사용자 정의 타입이라면, NULL 이 열에서 반환됩니다. |
max_length |
smallint | 열의 최대 길이(바이트)입니다.-1= 열 데이터 형식은 varchar(max), nvarchar(max), varbinary(max) 또는 xml입니다.텍스트 열의 경우, 값은 max_length , 또는 에 의해 sp_tableoption 'text in row'설정된 값입니다16. |
precision |
tinyint | 숫자 기반일 경우 열의 전체 자릿수이고 그렇지 않으면 0를 반환합니다. |
scale |
tinyint | 숫자 기반인 경우 열의 배율입니다. 그렇지 않으면 0를 반환합니다. |
collation_name |
sysname | 문자 기반인 경우 열의 데이터 정렬 이름입니다. 그렇지 않으면 NULL를 반환합니다. |
user_type_id |
int | CLR 및 별칭 형식의 경우 에 지정된 user_type_id대로 열의 데이터 형식을 포함합니다sys.types. 그렇지 않으면 .입니다 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 | 에 xml_collection_id 지정된 sys.columns열의 데이터 형식을 포함합니다. 반환된 형식이 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 | 열이 항등성 열일 경우 반환 1 하고, 그렇지 않으면 0입니다.
NULL 열이 ID 열인지 확인할 수 없는 경우 반환합니다. |
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 길이.
NULL 리스트가 없 ORDER BY 거나 리스트가 ORDER BY 고유하게 결정될 수 없을 때 반환됩니다. 이 값은 .에서 반환 sp_describe_first_result_set하는 모든 행에 대해 동일합니다. |
order_by_is_descending |
smallint |
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를 참조하세요.
다음 표는 오류 유형과 그 설명을 나열합니다.
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 |
결과는 배치가 재귀 문(recursive statement)을 포함하고 있어 결정할 수 없었습니다. |
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 인수를 실행할 수 있는 권한이 필요합니다.
예제
이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.
sp_describe_first_result_set 문서의 예시를 변형하여 .을 사용할 sys.dm_exec_describe_first_result_set수 있습니다.
A. 단일 Transact-SQL 명세서에 대한 정보를 반환합니다
다음 코드는 Transact-SQL 문의 결과에 대한 정보를 반환합니다.
USE @AdventureWorks2025;
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 @AdventureWorks2025;
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 AdventureWorks2025;
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;