다음을 통해 공유


SQL Server Native Client에서 스파스 열 지원(OLE DB)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

Important

SQL Server Native Client(약칭 SNAC)는 SQL Server 2022(16.x) 및 SSMS(SQL Server Management Studio) 19에서 제거되었습니다. SQL Server Native Client OLE DB 공급자(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 모두 새로운 개발에 권장되지 않습니다. 앞으로 SQL Server용 새 Microsoft OLE DB 드라이버(MSOLEDBSQL)로 전환합니다.

이 항목에서는 스파스 열에 대한 SQL Server Native Client OLE DB 지원에 대한 정보를 제공합니다. 스파스 열에 대한 자세한 내용은 Sparse Columns Support in SQL Server Native Client을 참조하십시오. 샘플은 열 및 스파스 열의 카탈로그 메타데이터 표시(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 인터페이스는 스파스 열을 지원하도록 SQL Server Native Client에서 수정되었습니다.

유형 또는 멤버 함수 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 Native Client(OLE DB)