SQL Server용 OLE DB 드라이버에서 스파스 열 지원Sparse Columns Support in OLE DB Driver for SQL Server

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics 예병렬 데이터 웨어하우스Parallel Data Warehouseyes병렬 데이터 웨어하우스Parallel Data Warehouse적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics 예병렬 데이터 웨어하우스Parallel Data Warehouseyes병렬 데이터 웨어하우스Parallel Data Warehouse

다운로드OLE DB 드라이버 다운로드DownloadDownload OLE DB Driver

OLE DB Driver for SQL Server는 스파스 열을 지원합니다.OLE DB Driver for SQL Server supports sparse columns. SQL ServerSQL Server의 스파스 열에 대한 자세한 내용은 스파스 열 사용열 집합 사용을 참조하세요.For more information about sparse columns in SQL ServerSQL Server, see Use Sparse Columns and Use Column Sets.

SQL Server용 OLE DB 드라이버에서 스파스 열 지원에 대한 자세한 내용은 스파스 열 지원(OLE DB)을 참조하세요.For more information about sparse column support in OLE DB Driver for SQL Server, Sparse Columns Support (OLE DB).

이 기능을 보여 주는 예제 애플리케이션에 대한 자세한 내용은 SQL Server 데이터 프로그래밍 예제를 참조하십시오.For information about sample applications that demonstrate this feature, see SQL Server Data Programming Samples.

스파스 열 및 OLE DB Driver for SQL Server 사용자 시나리오User Scenarios for Sparse Columns and OLE DB Driver for SQL Server

다음 표에는 스파스 열을 사용하는 OLE DB Driver for SQL Server 사용자의 일반적인 사용자 시나리오가 요약되어 있습니다.The following table summarizes the common user scenarios for OLE DB Driver for SQL Server users with sparse columns:

시나리오Scenario 동작Behavior
select * from table 또는 IOpenRowset::OpenRowset.select * from table or IOpenRowset::OpenRowset. 스파스 column_set 의 멤버가 아닌 모든 열과 스파스 column_set 의 null이 아닌 모든 열의 값이 포함된 XML 열을 반환합니다.Returns all columns that are not members of the sparse column_set, plus an XML column that contains the values of all non-null columns that are members of the sparse column_set.
이름으로 열 참조Reference a column by name. 열이 스파스 열인지 또는 column_set 의 멤버인지 여부에 관계없이 열을 참조할 수 있습니다.The column can be referenced regardless of its sparse column status or column_set membership.
XML 계산 열을 통해 column_set 멤버 열에 액세스합니다.Access column_set member columns through a computed XML column. 이름으로 column_set 을 선택하여 스파스 column_set 의 멤버인 열에 액세스할 수 있고 column_set 열의 XML을 업데이트하여 값을 삽입하고 업데이트할 수 있습니다.Columns that are members of the sparse column_set can be accessed by selecting the column_set by name and can have values inserted and updated by updating the XML in the column_set column.

값은 column_set 열에 대한 스키마를 따라야 합니다.The value must conform to the schema for column_set columns.
열 제한이 없는 DBSCHEMA_COLUMNS 스키마 행 집합을 통해 테이블의 모든 열에 대한 메타데이터를 검색합니다(OLE DB).Retrieve metadata for all columns in a table through the DBSCHEMA_COLUMNS schema rowset with no column restriction (OLE DB). column_set 의 멤버가 아닌 모든 열에 대해 한 개의 행을 반환합니다.Returns a row for all columns that are not members of a column_set. 테이블에 스파스 column_set 이 있으면 이에 대해 한 개의 행이 반환됩니다.If the table has a sparse column_set, a row will be returned for it.

column_set 의 멤버인 열에 대해서는 메타데이터를 반환하지 않습니다.Note that this does not return metadata for columns that are members of a column_set.
열이 스파스 열인지 또는 column_set 의 멤버인지 여부에 관계없이 모든 열의 메타데이터 검색.Retrieve metadata for all columns, regardless of sparseness or membership in a column_set. 이 경우 많은 수의 행이 반환될 수 있습니다.This might return a very large number of rows. DBSCHEMA_COLUMNS_EXTENDED 스키마 행 집합에 대해 IDBSchemaRowset::GetRowset을 호출합니다.Call IDBSchemaRowset::GetRowset for the DBSCHEMA_COLUMNS_EXTENDED schema rowset.
column_set 의 멤버인 열에 대해서만 메타데이터 검색.Retrieve metadata only for columns that are members of a column_set. 이 경우 많은 수의 행이 반환될 수 있습니다.This might return a very large number of rows. DBSCHEMA_SPARSE_COLUMN_SET 스키마 행 집합에 대해 IDBSchemaRowset::GetRowset을 호출합니다.Call IDBSchemaRowset::GetRowset for the DBSCHEMA_SPARSE_COLUMN_SET schema rowset.
열이 스파스 열인지 여부 확인Determine whether a column is sparse. DBSCHEMA_COLUMNS 스키마 행 집합의 SS_IS_SPARSE 열을 확인합니다(OLE DB).Consult the SS_IS_SPARSE column of the DBSCHEMA_COLUMNS schema rowset (OLE DB).
열이 column_set 인지 확인합니다.Determine if a column is a column_set. DBSCHEMA_COLUMNS 스키마 행 집합의 SS_IS_COLUMN_SET 열을 확인합니다.Consult the SS_IS_COLUMN_SET column of the DBSCHEMA_COLUMNS schema rowset. 또는 IColumnsRowset::GetColumnsRowset에서 반환된 행 집합에서 IColumnsinfo::GetColumnInfo 또는 DBCOLUMNFLAGS에 의해 반환된 dwFlags 를 참조합니다.Or, consult dwFlags returned by IColumnsinfo::GetColumnInfo or DBCOLUMNFLAGS in the rowset returned by IColumnsRowset::GetColumnsRowset. column_set 열의 경우 DBCOLUMNFLAGS_SS_ISCOLUMNSET이 설정됩니다.For column_set columns, DBCOLUMNFLAGS_SS_ISCOLUMNSET will be set.
column_set 이 없는 테이블에 대해 BCP를 사용하여 스파스 열 가져오기 및 내보내기.Import and export of sparse columns by BCP for a table with no column_set. 동작은 이전 버전의 OLE DB Driver for SQL Server와 동일합니다.No change in behavior from previous versions of OLE DB Driver for SQL Server.
column_set 이 있는 테이블에 대해 BCP를 사용하여 스파스 열 가져오기 및 내보내기.Import and export of sparse columns by BCP for a table with a column_set. column_set 를 XML과 같은 방식으로 가져오고 내보냅니다. 즉, 이진 형식으로 바인딩된 경우에는 varbinary(max) 를 사용하고, char 또는 wchar 형식으로 바인딩된 경우에는 nvarchar(max) 를 사용합니다.The column_set is imported and exported in the same way as XML; that is, as varbinary(max) if bound as a binary type, or as nvarchar(max) if bound as a char or wchar type.

스파스 column_set 의 멤버인 열은 별개의 열로 내보내지 않습니다. 이러한 열은 column_set 의 값으로만 내보냅니다.Columns that are members of the sparse column_set are not exported as distinct columns; they are only exported in the value of the column_set.
BCP에 대한 queryout 동작입니다.queryout behavior for BCP. 명시적으로 명명된 열의 처리는 이전 버전의 OLE DB Driver for SQL Server와 동일합니다.No change in the handling of explicitly named columns from previous versions of OLE DB Driver for SQL Server.

스키마가 서로 다른 테이블 간의 가져오기 및 내보내기가 포함된 시나리오의 경우 특수 처리가 필요할 수도 있습니다.Scenarios involving import and export between tables with different schemas may require special handling.

BCP에 대한 자세한 내용은 이 항목의 뒤에 나오는 스파스 열에 대한 BCP(대량 복사) 지원을 참조하십시오.For more information about BCP, see Bulk Copy (BCP) Support for Sparse Columns, later in this topic.

하위 수준 클라이언트 동작Down-Level Client Behavior

하위 수준 클라이언트는 SQLColumns 및 DBSCHMA_COLUMNS에 대해 스파스 column_set 의 멤버가 아닌 열에 대해서만 메타데이터를 반환합니다.Down-level clients will return metadata only for columns that are not members of the sparse column_set for SQLColumns and DBSCHMA_COLUMNS.

하위 수준 클라이언트는 스파스 column_set 의 멤버인 열에 이름으로 액세스할 수 있습니다. column_set 열은 XML 열로 SQL Server 2005(9.x)SQL Server 2005 (9.x) 클라이언트에 액세스할 수 있습니다.Down-level clients can access columns that are members of the sparse column_set by name, and the column_set column will be accessible as an XML column to SQL Server 2005(9.x)SQL Server 2005 (9.x) clients.

스파스 열에 대한 BCP(대량 복사) 지원Bulk Copy (BCP) Support for Sparse Columns

스파스 열이나 column_set 기능과 관련해서는 OLE DB의 BCP API에 변경된 사항이 없습니다.There are no changes to the BCP API in OLE DB for the sparse columns or column_set features.

테이블에 column_set 이 있으면 스파스 열이 별개의 열로 처리되지 않습니다.If a table has a column_set, sparse columns are not handled as distinct columns. 모든 스파스 열의 값은 column_set 값에 포함되며 이 값은 XML 열과 동일한 방식으로 내보내집니다. 즉, 이진 형식으로 바인딩된 경우에는 varbinary(max) 를 사용하고, char 또는 wchar 형식으로 바인딩된 경우에는 nvarchar(max) 를 사용합니다.The values of all sparse columns are included in the value of the column_set, which is exported in the same way as an XML column; that is, as varbinary(max) if bound as a binary type, or as nvarchar(max) if bound as a char or wchar type). 가져올 때 column_set 값이 column_set 의 스키마를 준수해야 합니다.On import, the column_set value must conform to the schema of the column_set.

queryout 작업의 경우 명시적으로 참조된 열의 처리 방법에는 변경된 사항이 없습니다.For queryout operations, there is no change to the way explicitly referenced columns are handled. column_set 열은 XML 열과 동작이 같고 스파스 열인지 여부는 명명된 스파스 열의 처리에 어떠한 영향도 주지 않습니다.column_set columns have the same behavior as XML columns and sparseness has no effect on the handling of named sparse columns.

그러나 내보내기 작업에 queryout 을 사용하고 스파스 열 집합의 멤버인 스파스 열을 이름으로 참조하는 경우 구조가 비슷한 테이블에는 직접 내보낼 수 없습니다.However, if queryout is used for export and you reference sparse columns that are members of the sparse column set by name, you cannot perform a direct import into a similarly structured table. 이는 BCP가 가져오기 작업에서 select * _ 작업과 일치하는 메타데이터를 사용하는데 _ column_set 멤버 열을 이 메타데이터와 일치시킬 수 없기 때문입니다.This is because BCP uses metadata consistent with a **select *_ operation for the import and is unable to match _* column_set* member columns with this metadata. column_set 멤버 열을 개별적으로 가져오려면 원하는 column_set 열을 참조하는 뷰를 테이블에서 정의한 다음, 이 뷰를 사용해 가져오기 작업을 수행해야 합니다.To import column_set member columns individually, you must define a view on the table that references the desired column_set columns, and you must perform the import operation using the view.

참고 항목See Also

SQL Server용 OLE DB 드라이버OLE DB Driver for SQL Server