다음을 통해 공유


공통 스키마 컬렉션

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

ADO.NET 다운로드

공통 스키마 컬렉션은 각 .NET 관리되는 공급자가 구현하는 스키마 컬렉션입니다. .NET 관리되는 공급자를 쿼리하여 인수를 사용하지 않거나 “MetaDataCollections”라는 스키마 컬렉션 이름으로 GetSchema 메서드를 호출함으로써 지원되는 스키마 컬렉션 목록을 확인할 수 있습니다. 이 메서드는 지원되는 스키마 컬렉션의 목록, 각각의 지원되는 제한 수 및 사용되는 식별자 부분의 수와 함께 DataTable을 반환합니다. 이 컬렉션은 필요한 모든 열을 설명합니다. 공급자는 원하는 경우 자유롭게 더 많은 열을 추가할 수 있습니다. 예를 들어, Microsoft SqlClient Data Provider SQL Server는 제한 컬렉션에 ParameterName을 추가합니다.

공급자는 필수 열의 값을 판단할 수 없는 경우 null을 반환합니다.

GetSchema 메서드를 사용하는 방법에 관한 자세한 내용은 GetSchema 및 스키마 컬렉션을 참조하세요.

MetaDataCollections

이 컬렉션에서는 데이터베이스에 연결하기 위해 현재 사용되는 공급자에서 지원되는 모든 스키마 컬렉션에 대한 정보를 노출합니다.

ColumnName DataType 설명
CollectionName string 컬렉션을 반환하기 위해 GetSchema 메서드로 전달할 컬렉션의 이름입니다.
NumberOfRestrictions int 컬렉션에 지정할 수 있는 제한의 수입니다.
NumberOfIdentifierParts int 복합 식별자/데이터베이스 개체 이름의 부분 개수. 예를 들어 SQL Server에서 값은 테이블에 대해 3, 열에 대해 4가 됩니다.

DataSourceInformation

이 스키마 컬렉션은 Microsoft SqlClient Data Provider for SQL Server가 현재 연결되어 있는 데이터 원본에 관한 정보를 공개합니다.

ColumnName DataType 설명
CompositeIdentifierSeparatorPattern string 복합 식별자의 복합 구분 기호와 일치하는 정규식입니다. 예: \.(SQL Server)

복합 식별자는 일반적으로 데이터베이스 개체 이름에 사용됩니다. 예: pubs.dbo.authors 또는 pubs@dbo.authors

SQL Server의 경우 정규식 “\.”을 사용합니다.
DataSourceProductName string "SQLServer"와 같이 공급자가 액세스하는 제품의 이름입니다.
DataSourceProductVersion string 공급자에서 액세스하는 제품의 버전을 Microsoft 형식이 아닌 데이터 소스 기본 형식으로 나타냅니다.

경우에 따라 DataSourceProductVersionDataSourceProductVersionNormalized는 동일한 값이 됩니다.
DataSourceProductVersionNormalized string String.Compare()와 비교할 수 있는 데이터 소스의 표준화된 버전. 이 형식은 버전 10이 버전 1과 버전 2 사이에서 정렬되지 않도록 모든 버전의 공급자에 대해 일치합니다.

예를 들어, SQL Server에서는 일반적인 Microsoft nn.nn.nnnn 형식을 사용합니다.

경우에 따라 DataSourceProductVersionDataSourceProductVersionNormalized는 동일한 값이 됩니다.
GroupByBehavior GroupByBehavior GROUP BY 절의 열과 선택 목록의 집계되지 않은 열 간의 관계를 지정합니다.
IdentifierPattern string 식별자와 일치하고 일치하는 식별자 값이 있는 정규식입니다. 예들 들어 [A-Za-z0-9_#$]입니다.
IdentifierCase IdentifierCase 따옴표로 묶지 않은 식별자의 대/소문자 구분 여부를 나타냅니다.
OrderByColumnsInSelect bool ORDER BY 절의 열이 선택 목록에 들어 있어야 하는지 여부를 지정합니다. true 값은 선택 목록에 있어야 함을 나타냅니다. false 값은 선택 목록에 있을 필요가 없음을 나타냅니다.
ParameterMarkerFormat string 매개 변수 형식을 지정하는 방법을 나타내는 형식 문자열입니다.

명명된 매개 변수를 데이터 소스에서 지원하는 경우 매개 변수 이름의 형식이 지정되어야 하는 위치가 이 문자열의 첫 번째 자리 표시자여야 합니다.

예를 들어, 데이터 원본에 : 접두사가 붙은 명명된 매개 변수가 필요한 경우에는 :{0}입니다. 이 문자열을 p1이라는 매개 변수 이름으로 형식을 지정하는 경우 그 결과로 나오는 문자열은 :p1입니다.

데이터 원본에 @이라는 접두사가 붙은 매개 변수가 필요하지만 이름에 이 매개 변수가 포함되어 있는 경우에는 {0}이 되므로 @p1이라는 매개 변수의 형식은 @p1이 됩니다.

명명된 매개 변수가 필요하지 않고 ? 문자를 사용해야 하는 데이터 원본의 경우 형식 문자열을 ?로 지정할 수 있습니다. 이 경우 매개 변수 이름은 무시됩니다.
ParameterMarkerPattern string 매개 변수 표식과 일치하는 정규식입니다. 매개 변수 이름이 있는 경우 일치하는 매개 변수 이름 값을 가집니다.

예를 들어, 매개 변수 이름에 포함될 @ 선행 문자와 함께 명명된 매개 변수를 지원하는 경우 이 패턴은 (\@[A-Za-z0-9_$#]*)입니다.

그러나 명명된 매개 변수가 선행 문자 :과 함께 지원되며 이 문자가 매개 변수 이름에 포함되어 있지 않은 경우 이 패턴은 :([A-Za-z0-9_$#]\*)입니다.

데이터 원본에서 명명된 매개 변수를 지원하는 경우 이 패턴은 ?입니다.
ParameterNameMaxLength int 매개 변수 이름의 최대 길이(문자 수)입니다. Visual Studio에서는 매개 변수 이름이 지원되는 경우 최대 길이에 대한 최소 값을 30자로 간주합니다.

데이터 원본이 명명된 매개 변수를 지원하지 않는 경우 이 속성은 0을 반환합니다.
ParameterNamePattern string 유효 매개 변수 이름과 일치하는 정규식입니다. 서로 다른 데이터 원본에는 매개 변수 이름에 사용할 수 있는 문자에 대한 서로 다른 규칙이 있습니다.

Visual Studio에서는 매개 변수 이름이 지원되는 경우 \p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd} 문자는 매개 변수 이름에 유효한 최소 지원 문자 집합인 것으로 예상합니다.
QuotedIdentifierPattern string 따옴표로 묶은 식별자와 일치하고 따옴표를 제외한 일치하는 식별자 값이 있는 정규식입니다. 예를 들어, 데이터 원본에서 큰따옴표를 사용하여 따옴표로 묶은 식별자를 식별하는 경우 이 패턴은 (([^\\"]\|\\"\\")*)입니다.
QuotedIdentifierCase IdentifierCase 따옴표로 묶은 식별자의 대/소문자 구분 여부를 나타냅니다.
StatementSeparatorPattern string 문 구분 기호와 일치하는 정규식입니다.
StringLiteralPattern string 문자 리터럴과 일치하고 일치하는 리터럴 값이 있는 정규식입니다. 예를 들어, 데이터 원본에서 작은따옴표를 사용하여 문자열을 식별하는 경우 이 패턴은 ('([^']\|'')*')입니다.
SupportedJoinOperators SupportedJoinOperators 데이터 소스에서 지원하는 SQL 조인 문의 형식을 지정합니다.

DataTypes

이 스키마 컬렉션에서는 공급자가 현재 연결되어 있는 데이터베이스에서 지원하는 데이터 형식에 대한 정보를 노출합니다.

ColumnName DataType 설명
TypeName string 공급자별 데이터 형식 이름입니다.
ProviderDbType int 매개 변수 형식을 지정할 때 사용해야 하는 공급자별 형식 값입니다. 예들 들어 SqlDbType.Money입니다.
ColumnSize long 숫자가 아닌 열 또는 매개 변수의 길이입니다. 이 값은 최대 길이 또는 공급자가 이 형식에 대해 정의한 길이를 나타냅니다.

문자 데이터의 경우 이 값은 최대 길이 또는 데이터 원본에 의해 정의된 단위의 길이입니다.

날짜-시간 데이터 형식의 경우 이 값은 문자열 표현의 길이입니다(소수 자릿수 초 구성 요소가 최대 허용 전체 자릿수라고 가정).

데이터 형식이 숫자인 경우 이 값은 데이터 형식의 최대 전체 자릿수에 대한 상한입니다.
CreateFormat string 이 열을 CREATE TABLE과 같은 데이터 정의 문에 추가하는 방법을 나타내는 형식 문자열입니다. CreateParameter 배열의 각 요소는 형식 문자열에 “매개 변수 표식”으로 나타나야 합니다.

예를 들어, SQL 데이터 형식 DECIMAL에는 정밀도와 배율이 필요합니다. 이 경우 형식 문자열은 DECIMAL({0},{1})입니다.
CreateParameters string 이 데이터 형식의 열을 만들 때 지정해야 하는 생성 매개 변수입니다. 각 생성 매개 변수는 제공되는 순서대로 쉼표로 구분하여 문자열에 나열됩니다.

예를 들어, SQL 데이터 형식 DECIMAL에는 정밀도와 배율이 필요합니다. 이 경우, 생성 매개 변수에는 "정밀도, 배율" 문자열이 포함되어야 합니다.

정밀도 10과 배율 2를 사용하여 DECIMAL 열을 만들기 위한 텍스트 명령에서 CreateFormat 열의 값은 DECIMAL({0},{1})이며 전체 형식 사양은 DECIMAL(10,2)입니다.
DataType string 데이터 형식의 .NET 형식 이름입니다.
IsAutoincrementable bool true - 이 데이터 형식의 값이 자동 증분됩니다.

false - 이 데이터 형식의 값이 자동 증분되지 않습니다.

이 속성은 이 형식의 열이 자동 증분되는 것이 아니라 이 데이터 형식의 열이 자동 증분되는지 여부를 나타냅니다.
IsBestMatch bool true - 데이터 형식이 데이터 저장소의 모든 데이터 형식과 DataType 열의 값으로 나타낸 .NET 데이터 형식 사이에서 정확히 일치합니다.

false - 데이터 형식이 정확히 일치하지 않습니다.

DataType 열 값이 같은 행 집합의 경우 IsBestMatch 열이 행 하나에만 true로 설정되어 있습니다.
IsCaseSensitive bool true - 데이터 형식이 문자 형식이며 대/소문자를 구분합니다.

false - 데이터 형식이 문자 형식이 아니거나 대/소문자를 구분하지 않습니다.
IsFixedLength bool true - DDL(데이터 정의 언어)에서 만든 이 데이터 형식의 열 길이가 고정 길이입니다.

false - DDL에서 만든 이 데이터 형식의 열 길이가 가변 길이입니다.

DBNull.Value - 공급자가 이 필드를 고정 길이 열에 매핑할지 가변 길이 열에 매핑할지 여부를 알 수 없습니다.
IsFixedPrecisionScale bool true - 데이터 형식의 정밀도와 배율이 고정되어 있습니다.

false - 데이터 형식의 정밀도와 배율이 고정되어 있지 않습니다.
IsLong bool true - 데이터 형식에 매우 긴 데이터가 포함되며, 매우 긴 데이터의 정의는 공급자별로 다릅니다.

false - 데이터 형식에 매우 긴 데이터가 포함되지 않습니다.
IsNullable bool true - 데이터 형식이 null 허용입니다.

false - 데이터 형식이 null 허용이 아닙니다.

DBNull.Value - 데이터 형식이 null 허용인지 여부를 알 수 없습니다.
IsSearchable bool true - 데이터 형식을 LIKE 조건부를 제외한 모든 연산자와 함께 WHERE 절에서 사용할 수 있습니다.

false - 데이터 형식을 LIKE 조건부를 제외한 모든 연산자와 함께 WHERE 절에서 사용할 수 없습니다.
IsSearchableWithLike bool true - 데이터 형식을 LIKE 조건부에서 사용할 수 있습니다.

false - 데이터 형식을 LIKE 조건부에서 사용할 수 없습니다.
IsUnsigned bool true - 부호 없는 데이터 형식입니다.

false - 부호 있는 데이터 형식입니다.

DBNull.Value - 데이터 형식에 적용할 수 없습니다.
MaximumScale short 형식 표시기가 숫자 형식인 경우 이 값은 소수점 오른쪽에 허용되는 최대 자릿수입니다. 그렇지 않은 경우 이 값은 DBNull.Value입니다.
MinimumScale short 형식 표시기가 숫자 형식인 경우 이 값은 소수점 오른쪽에 허용되는 최소 자릿수입니다. 그렇지 않은 경우 이 값은 DBNull.Value입니다.
IsConcurrencyType bool true - 행이 변경될 때마다 데이터베이스에서 데이터 형식을 업데이트하며 열의 값이 모든 이전 값과 다릅니다.

false - 행이 변경될 때마다 데이터베이스에서 데이터 형식을 업데이트하지 않습니다.

DBNull.Value – 데이터베이스에서 이 데이터 형식을 지원하지 않습니다.
IsLiteralSupported bool true - 데이터 형식을 리터럴로 표현할 수 있습니다.

false - 데이터 형식을 리터럴로 표현할 수 없습니다.
LiteralPrefix string 지정한 리터럴에 적용된 접두사입니다.
LiteralSuffix string 지정한 리터럴에 적용된 접미사입니다.

제한 사항

이 스키마 컬렉션에서는 데이터베이스에 연결하기 위해 현재 사용되는 공급자에서 지원하는 제한에 대한 정보를 노출시킵니다.

ColumnName DataType 설명
CollectionName string 이러한 제한이 적용되는 컬렉션의 이름입니다.
RestrictionName string 컬렉션에서 제한의 이름입니다.
RestrictionDefault string 무시됩니다.
RestrictionNumber int 특정 제한이 속한 Restrictions 컬렉션의 실제 위치입니다.

ReservedWords

이 스키마 컬렉션에서는 공급자가 현재 연결되어 있는 데이터베이스에서 예약된 단어에 대한 정보를 노출합니다.

ColumnName DataType 설명
ReservedWord string 공급자 관련 예약어입니다.

참고 항목