스파스 열 지원(OLE DB)

이 항목에서는 스파스 열에 대한 SQL Server Native Client OLE DB 지원에 대한 정보를 제공합니다. 스파스 열에 대한 자세한 내용은 Sparse Columns Support in SQL Server Native Client을 참조하십시오. 샘플은 열 및 스파스 열의 카탈로그 메타데이터 표시(OLE DB)를 참조하세요.

OLE DB 문 메타데이터

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

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 지원

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

유형 또는 멤버 함수 Description
IColumnsInfo::GetColumnsInfo dwFlags의 열에 대해 column_set DBCOLUMNFLAGS_SS_ISCOLUMNSET 새 DBCOLUMNFLAGS 플래그 값이 설정됩니다.

DBCOLUMNFLAGS_WRITE 열에 대해 column_set 설정됩니다.
IColumsRowset::GetColumnsRowset DBCOLUMN_FLAGS 열에 대해 column_set 새 DBCOLUMNFLAGS 플래그 값인 DBCOLUMNFLAGS_SS_ISCOLUMNSET 설정됩니다.

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 테이블에서 *를 선택하면 스파스의 멤버가 아닌 모든 열과 스파스의 column_set멤버인 null이 아닌 모든 열의 column_set값이 포함된 XML 열이 반환됩니다(있는 경우).
IOpenRowset::OpenRowset IOpenRowset::OpenRowset은 ICommand::Execute와 동일한 열을 포함하는 행 집합을 동일한 테이블에 대한 select * 쿼리와 함께 반환합니다.
ITableDefinition 스파스 열 또는 column_set 열의 경우 이 인터페이스는 변경되지 않습니다. 스키마를 수정해야 하는 애플리케이션에서는 적절한 Transact-SQL을 직접 실행해야 합니다.

참고 항목

SQL Server Native Client(OLE DB)