다음을 통해 공유


스파스 열 지원(OLE DB)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB 드라이버 다운로드

이 항목에서는 스파스 열에 대한 OLE DB Driver for SQL Server 지원에 대해 설명합니다. 스파스 열에 대한 자세한 내용은 SQL Server용 OLE DB 드라이버의 스파스 열 지원을 참조하세요. 샘플은 열 및 스파스 열의 카탈로그 메타데이터 표시(OLE DB)를 참조하세요.

OLE DB 문 메타데이터

SQL Server 2008(10.0.x)부터 새 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(8.x) 클라이언트에서와 동일하게 동작합니다.

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

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

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

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

스파스 열에 대한 OLE DB 지원

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

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

참고 항목

SQL Server 프로그래밍용 OLE DB 드라이버