sys.dm_exec_describe_first_result_set(Transact-SQL)
이 동적 관리 함수는 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(@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로 지정됩니다. |
name |
sysname |
이름을 확인할 수 있으면 열 이름을 포함합니다. 그렇지 않으면 NULL을 포함합니다. |
is_nullable |
bit |
다음 값을 포함합니다.
|
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 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 |
이 열의 위치가 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_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을 사용할 수 있습니다.
1.단일 Transact-SQL 문에 대한 정보 반환
다음 코드에서는 Transact-SQL 문 결과에 대한 정보를 반환합니다.
USE AdventureWorks2012;
GO
SELECT * FROM sys.dm_exec_describe_first_result_set
(N'SELECT object_id, name, type_desc FROM sys.indexes', null, 0) ;
2.프로시저에 대한 정보 반환
다음 예에서는 결과 집합 두 개를 반환하는 pr_TestProc 저장 프로시저를 만듭니다. 그런 다음 sys.dm_exec_describe_first_result_set가 프로시저의 첫 번째 결과 집합 정보를 반환하는 것을 보여 줍니다.
USE AdventureWorks2012;
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) ;
3.여러 문이 포함된 일괄 처리에서 메타데이터 반환
다음 예에서는 두 개의 Transact-SQL 문이 포함된 일괄 처리를 평가합니다. 결과 집합이 반환된 첫 번째 결과 집합을 설명합니다.
USE AdventureWorks2012;
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)