Share via


스파스 열 지원(OLE DB)

이 항목에서는 스파스 열에 대한 SQL Server Native Client OLE DB 지원에 대해 설명합니다. 스파스 열에 대한 자세한 내용은 SQL Server Native Client의 스파스 열 지원을 참조하십시오.

OLE DB 문 메타데이터

SQL Server 2008부터 새 DBCOLUMNFLAGS 플래그 값인 DBCOLUMNFLAGS_SS_ISCOLUMNSET을 사용할 수 있습니다. 이 값은 column_set 값인 열에 대해 설정해야 합니다. DBCOLUMNFLAGS 플래그는 IColumnsRowset::GetColumnsRowset에서 반환하는 행 집합의 DBCOLUMN_FLAGS 열과 IColumnsInfo::GetColumnsInfo의 매개 변수를 통해 검색할 수 있습니다.

OLE DB 카탈로그 메타데이터

DBSCHEMA_COLUMNS에는 다음과 같은 두 개의 SQL Server 특정 열이 새로 추가되었습니다.

열 이름

데이터 형식

값/설명

SS_IS_SPARSE

DBTYPE_BOOL

열이 스파스 열이면 VARIANT_TRUE 값을 갖고, 그렇지 않으면 VARIANT_FALSE 값을 갖습니다.

SS_IS_COLUMN_SET

DBTYPE_BOOL

열이 스파스 column_set 열이면 VARIANT_TRUE 값을 갖고, 그렇지 않으면 VARIANT_FALSE 값을 갖습니다.

또한 다음과 같은 두 개의 스키마 행 집합도 새로 추가되었습니다. 이러한 행 집합은 DBSCHEMA_COLUMNS와 구조가 동일하지만 다른 내용을 반환합니다. DBSCHEMA_COLUMNS_EXTENDED는 column_set 멤버 자격에 관계없이 모든 열을 반환하고 DBSCHEMA_SPARSE_COLUMN_SET은 스파스 column_set의 멤버인 열만 반환합니다.

OLE DB DataTypeCompatibility 동작

연결 문자열에 있는 DataTypeCompatibility=80은 다음과 같이 SQL Server 2000 클라이언트에서와 동일하게 동작합니다.

  • 새 스키마 행 집합이 표시되지 않으며 스키마 행 집합의 행 집합에 이러한 행 집합에 대한 행이 없습니다.

  • COLUMNS 행 집합의 새 열이 표시되지 않습니다.

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET이 column_set 열에 대해 설정되지 않습니다.

  • DBCOMPUTEMODE_NOTCOMPUTED가 column_set 열에 대해 설정됩니다.

스파스 열에 대한 OLE DB 지원

SQL Server Native Client에서는 다음과 같은 OLE DB 인터페이스가 스파스 열을 지원하도록 수정되었습니다.

유형 또는 멤버 함수

설명

IColumnsInfo::GetColumnsInfo

새 DBCOLUMNFLAGS 플래그 값인 DBCOLUMNFLAGS_SS_ISCOLUMNSET가 dwFlags의 column_set 열에 대해 설정됩니다.

DBCOLUMNFLAGS_WRITE가 column_set 열에 대해 설정됩니다.

IColumsRowset::GetColumnsRowset

새 DBCOLUMNFLAGS 플래그 값인 DBCOLUMNFLAGS_SS_ISCOLUMNSET이 DBCOLUMN_FLAGS의 column_set 열에 대해 설정됩니다.

DBCOLUMN_COMPUTEMODE가 column_set 열에 대해 DBCOMPUTEMODE_DYNAMIC으로 설정됩니다.

IDBSchemaRowset::GetSchemaRowset

DBSCHEMA_COLUMNS는 두 개의 새 열, SS_IS_COLUMN_SET과 SS_IS_SPARSE를 반환합니다.

DBSCHEMA_COLUMNS는 column_set의 멤버가 아닌 열만 반환합니다.

다음과 같은 두 개의 스키마 행 집합이 새로 추가되었습니다. DBSCHEMA_COLUMNS_EXTENDED는 column_set 멤버 자격의 스파스 여부에 관계없이 모든 열을 반환하고 DBSCHEMA_SPARSE_COLUMN_SET은 column_set의 멤버인 열만 반환합니다. 이러한 새 행 집합은 DBSCHEMA_COLUMNS와 동일한 열과 제한 사항을 갖습니다.

IDBSchemaRowset::GetSchemas

IDBSchemaRowset::GetSchemas에는 사용 가능한 스키마 행 집합 목록에 있는 두 개의 행 집합, DBSCHEMA_COLUMNS_EXTENDED 및 DBSCHEMA_SPARSE_COLUMN_SET에 대한 GUID가 포함됩니다.

ICommand::Execute

select * from table을 사용할 경우 스파스 column_set의 멤버가 아닌 모든 열과 스파스 column_set의 멤버인 Null이 아닌 모든 열의 값(있는 경우)이 포함된 XML 열을 반환합니다.

IOpenRowset::OpenRowset

IOpenRowset::OpenRowset은 동일한 테이블에 대한 select * 쿼리를 통해 ICommand::Execute와 동일한 열이 포함된 행 집합을 반환합니다.

ITableDefinition

스파스 열이나 column_set 열의 경우 이 인터페이스에 변경 사항이 없습니다. 스키마를 수정해야 하는 응용 프로그램에서는 적절한 Transact-SQL을 직접 실행해야 합니다.