다음을 통해 공유


SQL Server 용 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 Driver for SQL Server에서 스파스 열 지원에 대한 자세한 내용은 스파스 열 지원(OLE DB)을 참조하세요.

스파스 열 및 SQL Server용 OLE DB 드라이버에 대한 사용자 시나리오

다음 표에서는 스파스 열이 있는 SQL Server용 OLE DB 드라이버 사용자에 대한 일반적인 사용자 시나리오를 요약합니다.

시나리오 동작
select * from table 또는 IOpenRowset::OpenRowset. 스파스 column_set의 멤버가 아닌 모든 열과 스파스 column_set의 null이 아닌 모든 열의 값이 포함된 XML 열을 반환합니다.
이름으로 열을 참조합니다. 스파스 열 상태 또는 column_set 멤버 자격에 관계없이 열을 참조할 수 있습니다.
계산된 XML 열을 통해 column_set 멤버 열에 액세스합니다. 스파스 column_set 멤버인 열은 이름으로 column_set 선택하여 액세스할 수 있으며 column_set 열에서 XML을 업데이트하여 값을 삽입하고 업데이트할 수 있습니다.

값은 column_set 열의 스키마를 준수해야 합니다.
열 제한이 없는 DBSCHEMA_COLUMNS 스키마 행 집합을 통해 테이블의 모든 열에 대한 메타데이터를 검색합니다(OLE DB). column_set 멤버가 아닌 모든 열의 행을 반환합니다. 테이블에 스파스 column_set 있는 경우 행이 반환됩니다.

column_set 멤버인 열에 대한 메타데이터는 반환되지 않습니다.
열이 스파스 열인지 또는 column_set의 멤버인지 여부에 관계없이 모든 열의 메타데이터 검색. 이 경우 많은 수의 행이 반환될 수 있습니다. DBSCHEMA_COLUMNS_EXTENDED 스키마 행 집합에 대해 IDBSchemaRowset::GetRowset을 호출합니다.
column_set 멤버인 열에 대해서만 메타데이터를 검색합니다. 이 경우 많은 수의 행이 반환될 수 있습니다. DBSCHEMA_SPARSE_COLUMN_SET 스키마 행 집합에 대해 IDBSchemaRowset::GetRowset을 호출합니다.
열이 스파스인지 여부를 확인합니다. DBSCHEMA_COLUMNS 스키마 행 집합(OLE DB)의 SS_IS_SPARSE 열을 참조하세요.
열이 column_set 있는지 확인합니다. DBSCHEMA_COLUMNS 스키마 행 집합의 SS_IS_COLUMN_SET 열을 참조하세요. 또는 IColumnsRowset::GetColumnsRowset에서 반환된 행 집합에서 IColumnsinfo::GetColumnInfo 또는 DBCOLUMNFLAGS에서 반환된 dwFlags를 참조하세요. column_set 열의 경우 DBCOLUMNFLAGS_SS_ISCOLUMNSET 설정됩니다.
column_set이 없는 테이블에 대해 BCP를 사용하여 스파스 열 가져오기 및 내보내기. 동작은 이전 버전의 OLE DB Driver for SQL Server와 동일합니다.
column_set 있는 테이블에 대해 BCP에서 스파스 열을 가져오고 내보냅니다. column_set XML과 동일한 방식으로 가져오고 내보냅니다. 즉, 이진 형식으로 바인딩된 경우 varbinary(max) 또는 char 또는 wchar 형식으로 바인딩된 경우 nvarchar(max)로 내보냅니다.

스파스 column_set 멤버인 열은 고유 열로 내보내지지 않으며 column_set으로만 내보냅니다.
BCP에 대한 쿼리 아웃 동작입니다. 이전 버전의 OLE DB Driver for SQL Server에서 명시적으로 명명된 열의 처리는 변경되지 않습니다.

스키마가 다른 테이블 간의 가져오기 및 내보내기와 관련된 시나리오에는 특별한 처리가 필요할 수 있습니다.

BCP에 대한 자세한 내용은 이 항목의 뒷부분에 있는 스파스 열에 대한 BCP(대량 복사) 지원을 참조하세요.

하위 수준 클라이언트 동작

하위 수준 클라이언트는 SQLColumns 및 DBSCHMA_COLUMNS 대한 스파스 column_set 멤버가 아닌 열에 대해서만 메타데이터를 반환합니다.

하위 수준 클라이언트는 이름으로 스파스 column_set 멤버인 열에 액세스할 수 있으며 , column_set 열은 SQL Server 2005(9.x) 클라이언트에 대한 XML 열로 액세스할 수 있습니다.

스파스 열에 대한 BCP(대량 복사) 지원

스파스 열 또는 column_set 기능에 대한 OLE DB의 BCP API는 변경되지 않습니다.

테이블에 column_set 있는 경우 스파스 열은 고유 열로 처리되지 않습니다. 모든 스파스 열의 값은 XML 열과 동일한 방식으로 내보내지는 column_set 값에 포함됩니다. 즉, 이진 형식으로 바인딩된 경우 varbinary(max)로, 또는 char 또는 wchar 형식으로 바인딩된 경우 nvarchar(max)로 포함됩니다. 가져올 때 column_set 값은 column_set 스키마를 준수해야 합니다.

쿼리 아웃 작업의 경우 명시적으로 참조된 열이 처리되는 방식은 변경되지 않습니다. column_set 열은 XML 열과 동일한 동작을 가지며 스파스는 명명된 스파스 열의 처리에 영향을 주지 않습니다.

그러나 쿼리 아웃이 내보내기에 사용되고 이름으로 설정된 스파스 열의 멤버인 스파스 열을 참조하는 경우 유사하게 구조화된 테이블로 직접 가져올 수 없습니다. 이는 BCP가 가져오기 작업에서 select * 작업과 일치하는 메타데이터를 사용하는데 column_set 멤버 열을 이 메타데이터와 일치시킬 수 없기 때문입니다. column_set 멤버 열을 개별적으로 가져오려면 원하는 column_set 열을 참조하는 뷰를 테이블에 정의해야 하며 뷰를 사용하여 가져오기 작업을 수행해야 합니다.

참고 항목

SQL Server용 OLE DB 드라이버