다음을 통해 공유


SQL Server 스키마 컬렉션

적용 대상: .NET Framework .NET .NET Standard

ADO.NET 다운로드

Microsoft SqlClient 데이터 공급자 의 경우 SQL Server는 공통 스키마 컬렉션 외에 추가 스키마 컬렉션도 지원합니다. 지원되는 스키마 컬렉션은 현재 사용하고 있는 SQL Sever 버전에 따라 조금씩 다를 수 있습니다. 지원되는 스키마 컬렉션 목록을 확인하려면 GetSchema 메서드를 인수 없이 호출하거나 "MetaDataCollections"라는 스키마 컬렉션 이름을 사용하여 호출합니다. 그러면 지원되는 스키마 컬렉션의 목록, 각자 지원하는 제약 조건 수 및 사용하는 식별자 부분 수가 포함된 DataTable이 반환됩니다.

데이터베이스

ColumnName DataType 설명
database_name 문자열 데이터베이스 이름입니다.
dbid Int16 데이터베이스 ID입니다.
create_date DateTime 데이터베이스를 만든 날짜입니다.

외래 키

ColumnName DataType 설명
CONSTRAINT_CATALOG 문자열 제약 조건이 속하는 카탈로그입니다.
CONSTRAINT_SCHEMA 문자열 제약 조건을 포함하는 스키마입니다.
CONSTRAINT_NAME 문자열 Name(이름):
TABLE_CATALOG 문자열 제약 조건이 속하는 테이블 이름입니다.
TABLE_SCHEMA 문자열 해당 테이블을 포함하는 스키마입니다.
TABLE_NAME String Table Name
CONSTRAINT_TYPE 문자열 제약 조건의 형식입니다. "FOREIGN KEY"만 허용됩니다.
IS_DEFERRABLE 문자열 제약 조건의 지연 가능 여부를 지정합니다. NO를 반환합니다.
INITIALLY_DEFERRED 문자열 제약 조건의 초기 지연 가능 여부를 지정합니다. NO를 반환합니다.

인덱스

ColumnName DataType 설명
constraint_catalog 문자열 인덱스가 속하는 카탈로그입니다.
constraint_schema 문자열 해당 인덱스를 포함하는 스키마입니다.
constraint_name 문자열 인덱스의 이름입니다.
table_catalog 문자열 인덱스가 연결되는 테이블 이름입니다.
table_schema 문자열 인덱스가 연결되는 테이블을 포함하는 스키마입니다.
table_name String 테이블 이름입니다.
index_name 문자열 인덱스 이름.
type_desc 문자열 인덱스 형식은 다음 중 하나입니다.

- HEAP
- CLUSTERED
- NONCLUSTERED
- XML
- SPATIAL

IndexColumns

ColumnName DataType 설명
constraint_catalog 문자열 인덱스가 속하는 카탈로그입니다.
constraint_schema 문자열 해당 인덱스를 포함하는 스키마입니다.
constraint_name 문자열 인덱스의 이름입니다.
table_catalog 문자열 인덱스가 연결되는 테이블 이름입니다.
table_schema 문자열 인덱스가 연결되는 테이블을 포함하는 스키마입니다.
table_name String 테이블 이름입니다.
column_name String 인덱스가 연결되는 ColumnName입니다.
ordinal_position Int32 열 서수 위치입니다.
KeyType Byte 개체의 형식.
index_name 문자열 인덱스 이름.

절차

ColumnName DataType 설명
SPECIFIC_CATALOG 문자열 카탈로그의 특정 이름입니다.
SPECIFIC_SCHEMA 문자열 스키마의 특정 이름입니다.
SPECIFIC_NAME 문자열 카탈로그의 특정 이름입니다.
ROUTINE_CATALOG 문자열 저장 프로시저가 속하는 카탈로그입니다.
ROUTINE_SCHEMA 문자열 저장 프로시저를 포함하는 스키마입니다.
ROUTINE_NAME 문자열 저장 프로시저의 이름입니다.
ROUTINE_TYPE 문자열 저장 프로시저에 대해서는 PROCEDURE를 반환하고 함수에 대해서는 FUNCTION을 반환합니다.
CREATED DateTime 프로시저가 만들어진 시간입니다.
LAST_ALTERED DateTime 프로시저가 마지막으로 수정된 시간입니다.

Procedure Parameters

ColumnName DataType 설명
SPECIFIC_CATALOG 문자열 이 항목이 매개 변수인 프로시저의 카탈로그 이름입니다.
SPECIFIC_SCHEMA 문자열 이 매개 변수가 속하는 프로시저가 포함된 스키마입니다.
SPECIFIC_NAME 문자열 이 매개 변수가 속하는 프로시저의 이름입니다.
ORDINAL_POSITION Int32 1에서 시작하는 매개 변수의 서수 위치이며, 프로시저의 반환 값인 경우 0입니다.
PARAMETER_MODE 문자열 입력 매개 변수이면 IN을, 출력 매개 변수이면 OUT을, 입력/출력 매개 변수이면 INOUT을 각각 반환합니다.
IS_RESULT 문자열 함수인 프로시저의 결과를 나타내는 경우 YES를 반환합니다. 그렇지 않은 경우에는 NO를 반환합니다.
AS_LOCATOR 문자열 로케이터로 선언되는 경우 YES를 반환합니다. 그렇지 않은 경우에는 NO를 반환합니다.
PARAMETER_NAME 문자열 매개 변수의 이름입니다. 함수의 반환 값에 해당하면 NULL입니다.
DATA_TYPE 문자열 시스템 제공 데이터 형식입니다.
CHARACTER_MAXIMUM_LENGTH Int32 이진 데이터 형식 또는 문자 데이터 형식의 최대 길이를 문자 단위로 표시한 것입니다. 그렇지 않으면 NULL을 반환합니다.
CHARACTER_OCTET_LENGTH Int32 이진 또는 문자 데이터 형식의 최대 길이(바이트)입니다. 그렇지 않으면 NULL을 반환합니다.
COLLATION_CATALOG 문자열 매개 변수의 데이터 정렬에 대한 카탈로그 이름입니다. 문자 형식 중 하나가 아닌 경우에는 NULL이 반환됩니다.
COLLATION_SCHEMA 문자열 항상 NULL을 반환합니다.
COLLATION_NAME 문자열 매개 변수의 데이터 정렬 이름입니다. 문자 형식 중 하나가 아닌 경우에는 NULL이 반환됩니다.
CHARACTER_SET_CATALOG 문자열 매개 변수 문자 집합의 카탈로그 이름입니다. 문자 형식 중 하나가 아닌 경우에는 NULL이 반환됩니다.
CHARACTER_SET_SCHEMA 문자열 항상 NULL을 반환합니다.
CHARACTER_SET_NAME 문자열 매개 변수의 문자 집합 이름입니다. 문자 형식 중 하나가 아닌 경우에는 NULL이 반환됩니다.
NUMERIC_PRECISION Byte 근접한 숫자 데이터의 정밀도, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 그렇지 않으면 NULL을 반환합니다.
NUMERIC_PRECISION_RADIX Int16 근접한 숫자 데이터의 정밀도 기수, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 그렇지 않으면 NULL을 반환합니다.
NUMERIC_SCALE Int32 근접한 숫자 데이터의 배율, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 그렇지 않으면 NULL을 반환합니다.
DATETIME_PRECISION Int16 매개 변수 형식이 datetime 또는 smalldatetime이면 소수로 나타낸 시간(초)의 정밀도입니다. 그렇지 않으면 NULL을 반환합니다.
INTERVAL_TYPE 문자열 NULL 나중에 SQL Server에서 사용하도록 예약되었습니다.
INTERVAL_PRECISION Int16 NULL 나중에 SQL Server에서 사용하도록 예약되었습니다.

테이블

ColumnName DataType 설명
TABLE_CATALOG 문자열 테이블의 카탈로그입니다.
TABLE_SCHEMA 문자열 해당 테이블을 포함하는 스키마입니다.
TABLE_NAME String 테이블 이름입니다.
TABLE_TYPE 문자열 테이블 형식입니다. VIEW 또는 BASE TABLE일 수 있습니다.

ColumnName DataType 설명
TABLE_CATALOG 문자열 테이블의 카탈로그입니다.
TABLE_SCHEMA 문자열 해당 테이블을 포함하는 스키마입니다.
TABLE_NAME String 테이블 이름입니다.
COLUMN_NAME String 열 이름.
ORDINAL_POSITION Int32 열 ID 번호입니다.
COLUMN_DEFAULT 문자열 열 기본값입니다.
IS_NULLABLE String 열의 Null 허용 여부입니다. 이 열에서 NULL을 허용하는 경우 YES를 반환합니다. 그렇지 않으면 No가 반환됩니다.
DATA_TYPE 문자열 시스템 제공 데이터 형식입니다.
CHARACTER_MAXIMUM_LENGTH Int32 - Sql8, Int16 - Sql7 이진 데이터, 문자 데이터 또는 텍스트와 이미지 데이터의 최대 길이(문자)입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
CHARACTER_OCTET_LENGTH Int32 - SQL8, Int16 - Sql7 이진 데이터, 문자 데이터 또는 텍스트 및 이미지 데이터의 최대 길이(바이트)입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_PRECISION 부호 없는 바이트 근접한 숫자 데이터의 정밀도, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_PRECISION_RADIX Int16 근접한 숫자 데이터의 정밀도 기수, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_SCALE Int32 근접한 숫자 데이터의 배율, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
DATETIME_PRECISION Int16 datetime 및 SQL-92 interval 데이터 형식에 대한 하위 형식 코드입니다. 다른 데이터 형식의 경우 NULL이 반환됩니다.
CHARACTER_SET_CATALOG 문자열 열이 문자 데이터 또는 텍스트 데이터 형식이면 문자 집합이 있는 데이터베이스를 나타내는 master가 반환됩니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
CHARACTER_SET_SCHEMA 문자열 항상 NULL을 반환합니다.
CHARACTER_SET_NAME 문자열 이 열이 문자 데이터 또는 텍스트 데이터 형식인 경우 문자 집합에 대해 고유 이름을 반환합니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
COLLATION_CATALOG 문자열 열이 문자 데이터 또는 텍스트 데이터 형식이면 정렬이 정의된 데이터베이스를 나타내는 master를 반환합니다. 그렇지 않으면 이 열은 NULL입니다.
IS_FILESTREAM 문자열 열에 FILESTREAM 특성이 있으면 YES입니다.

열에 FILESTREAM 특성이 없으면 NO입니다.
IS_SPARSE 문자열 열이 스파스 열이면 YES입니다.

열이 스파스 열이 아니면 NO입니다.
IS_COLUMN_SET 문자열 열이 열 집합 열이면 YES입니다.

열이 열 집합 열이 아니면 NO입니다.

AllColumns

AllColumns 스키마 컬렉션은 스파스 열을 지원하는 데 사용됩니다. AllColumns는 제한 및 결과 DataTable 스키마가 Columns 스키마 컬렉션과 동일합니다. 유일한 차이점은 Columns 스키마 컬렉션에는 포함되어 있지 않은 열 집합 열이 AllColumns에는 있다는 것입니다. 다음 표에서는 이러한 열에 대해 설명합니다.

ColumnName DataType 설명
TABLE_CATALOG 문자열 테이블의 카탈로그입니다.
TABLE_SCHEMA 문자열 해당 테이블을 포함하는 스키마입니다.
TABLE_NAME String 테이블 이름입니다.
COLUMN_NAME String 열 이름.
ORDINAL_POSITION Int32 열 ID 번호입니다.
COLUMN_DEFAULT 문자열 열 기본값입니다.
IS_NULLABLE String 열의 Null 허용 여부입니다. 이 열에서 NULL을 허용하는 경우 YES를 반환합니다. 그렇지 않으면 NO가 반환됩니다.
DATA_TYPE 문자열 시스템 제공 데이터 형식입니다.
CHARACTER_MAXIMUM_LENGTH Int32 이진 데이터, 문자 데이터 또는 텍스트와 이미지 데이터의 최대 길이(문자)입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
CHARACTER_OCTET_LENGTH Int32 이진 데이터, 문자 데이터 또는 텍스트 및 이미지 데이터의 최대 길이(바이트)입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_PRECISION 부호 없는 바이트 근접한 숫자 데이터의 정밀도, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_PRECISION_RADIX Int16 근접한 숫자 데이터의 정밀도 기수, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_SCALE Int32 근접한 숫자 데이터의 배율, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
DATETIME_PRECISION Int16 datetime 및 SQL-92 interval 데이터 형식에 대한 하위 형식 코드입니다. 다른 데이터 형식의 경우 NULL이 반환됩니다.
CHARACTER_SET_CATALOG 문자열 열이 문자 데이터 또는 텍스트 데이터 형식이면 문자 집합이 있는 데이터베이스를 나타내는 master가 반환됩니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
CHARACTER_SET_SCHEMA 문자열 항상 NULL을 반환합니다.
CHARACTER_SET_NAME 문자열 이 열이 문자 데이터 또는 텍스트 데이터 형식인 경우 문자 집합에 대해 고유 이름을 반환합니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
COLLATION_CATALOG 문자열 열이 문자 데이터 또는 텍스트 데이터 형식이면 정렬이 정의된 데이터베이스를 나타내는 master를 반환합니다. 그렇지 않으면 이 열은 NULL입니다.
IS_FILESTREAM 문자열 열에 FILESTREAM 특성이 있으면 YES입니다.

열에 FILESTREAM 특성이 없으면 NO입니다.
IS_SPARSE 문자열 열이 스파스 열이면 YES입니다.

열이 스파스 열이 아니면 NO입니다.
IS_COLUMN_SET 문자열 열이 열 집합 열이면 YES입니다.

열이 열 집합 열이 아니면 NO입니다.

ColumnSetColumns

ColumnSetColumns 스키마 컬렉션은 스파스 열을 지원하는 데 사용됩니다. ColumnSetColumns 스키마 컬렉션은 열 집합에 포함된 모든 열의 스키마를 반환합니다. 다음 표에서는 이러한 열에 대해 설명합니다.

ColumnName DataType 설명
TABLE_CATALOG 문자열 테이블의 카탈로그입니다.
TABLE_SCHEMA 문자열 해당 테이블을 포함하는 스키마입니다.
TABLE_NAME String 테이블 이름입니다.
COLUMN_NAME String 열 이름.
ORDINAL_POSITION Int32 열 ID 번호입니다.
COLUMN_DEFAULT 문자열 열 기본값입니다.
IS_NULLABLE String 열의 Null 허용 여부입니다. 이 열에서 NULL을 허용하는 경우 YES를 반환합니다. 그렇지 않으면 NO가 반환됩니다.
DATA_TYPE 문자열 시스템 제공 데이터 형식입니다.
CHARACTER_MAXIMUM_LENGTH Int32 이진 데이터, 문자 데이터 또는 텍스트와 이미지 데이터의 최대 길이(문자)입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
CHARACTER_OCTET_LENGTH Int32 이진 데이터, 문자 데이터 또는 텍스트 및 이미지 데이터의 최대 길이(바이트)입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_PRECISION 부호 없는 바이트 근접한 숫자 데이터의 정밀도, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_PRECISION_RADIX Int16 근접한 숫자 데이터의 정밀도 기수, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
NUMERIC_SCALE Int32 근접한 숫자 데이터의 배율, 정확한 숫자 데이터, 정수 데이터 또는 통화 데이터입니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
DATETIME_PRECISION Int16 datetime 및 SQL-92 interval 데이터 형식에 대한 하위 형식 코드입니다. 다른 데이터 형식의 경우 NULL이 반환됩니다.
CHARACTER_SET_CATALOG 문자열 열이 문자 데이터 또는 텍스트 데이터 형식이면 문자 집합이 있는 데이터베이스를 나타내는 master가 반환됩니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
CHARACTER_SET_SCHEMA 문자열 항상 NULL을 반환합니다.
CHARACTER_SET_NAME 문자열 이 열이 문자 데이터 또는 텍스트 데이터 형식인 경우 문자 집합에 대해 고유 이름을 반환합니다. 다른 데이터 형식에 대해서는 NULL이 반환됩니다.
COLLATION_CATALOG 문자열 열이 문자 데이터 또는 텍스트 데이터 형식이면 정렬이 정의된 데이터베이스를 나타내는 master를 반환합니다. 그렇지 않으면 이 열은 NULL입니다.
IS_FILESTREAM 문자열 열에 FILESTREAM 특성이 있으면 YES입니다.

열에 FILESTREAM 특성이 없으면 NO입니다.
IS_SPARSE 문자열 열이 스파스 열이면 YES입니다.

열이 스파스 열이 아니면 NO입니다.
IS_COLUMN_SET 문자열 열이 열 집합 열이면 YES입니다.

열이 열 집합 열이 아니면 NO입니다.

사용자

ColumnName DataType 설명
uid Int16 이 데이터베이스에 고유한 사용자 ID입니다. 데이터베이스 소유자는 1입니다.
user_name 문자열 이 데이터베이스에 고유한 사용자 이름 및 그룹 이름입니다.
createdate DateTime 계정이 추가된 날짜입니다.
updatedate DateTime 계정이 마지막으로 변경된 날짜입니다.

ColumnName DataType 설명
TABLE_CATALOG 문자열 뷰의 카탈로그입니다.
TABLE_SCHEMA 문자열 해당 뷰를 포함하는 스키마입니다.
TABLE_NAME String 뷰 이름입니다.
CHECK_OPTION 문자열 WITH CHECK OPTION 형식입니다. 원래 뷰를 WITH CHECK OPTION을 사용하여 만든 경우 Is CASCADE입니다. 그렇지 않으면 NONE이 반환됩니다.
IS_UPDATABLE 문자열 뷰를 업데이트할 수 있는지 여부를 지정합니다. 항상 NO를 반환합니다.

ViewColumns

ColumnName DataType 설명
VIEW_CATALOG 문자열 뷰의 카탈로그입니다.
VIEW_SCHEMA 문자열 해당 뷰를 포함하는 스키마입니다.
VIEW_NAME 문자열 뷰 이름입니다.
TABLE_CATALOG 문자열 이 뷰와 연관된 테이블의 카탈로그입니다.
TABLE_SCHEMA 문자열 이 뷰와 연관된 테이블을 포함하는 스키마입니다.
TABLE_NAME String 뷰와 연관된 테이블의 이름입니다. 기본 테이블입니다.
COLUMN_NAME String 열 이름.

UserDefinedTypes

ColumnName DataType 설명
assembly_name 문자열 어셈블리의 파일 이름입니다.
udt_name 문자열 어셈블리의 클래스 이름입니다.
version_major Object 주 버전 번호입니다.
version_minor Object 보조 버전 번호입니다.
version_build Object 빌드 번호입니다.
version_revision Object 수정 번호입니다.
culture_info Object 이 UDT와 연관된 문화권 정보입니다.
public_key Object 이 어셈블리에서 사용되는 공개 키입니다.
is_fixed_length Boolean 형식 길이가 항상 max_length와 같은지 여부를 지정합니다.
max_length Int16 형식의 최대 길이(바이트)입니다.
Create_Date DateTime 어셈블리가 만들어져 등록된 날짜입니다.
Permission_set_desc 문자열 어셈블리의 권한 집합/보안 수준 이름입니다.

참고 항목