스파스 열 지원(OLE DB)
적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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 | select * fromtable을 사용하면 스파스 column_set의 멤버가 아닌 모든 열과 스파스 column_set의 멤버인 Null이 아닌 모든 열의 값(있는 경우)이 포함된 XML 열을 반환합니다. |
IOpenRowset::OpenRowset | IOpenRowset::OpenRowset은 ICommand::Execute와 동일한 열을 포함하는 행 집합을 동일한 테이블에 대한 select * 쿼리와 함께 반환합니다. |
ITableDefinition | 스파스 열이나 column_set 열의 경우 이 인터페이스에 변경 사항이 없습니다. 스키마를 수정해야 하는 애플리케이션에서는 적절한 Transact-SQL을 직접 실행해야 합니다. |
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기