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