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