SQL Server용 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 Driver for SQL Server에서 스파스 열 지원에 대한 자세한 내용은 스파스 열 지원(OLE DB)을 참조하세요.
스파스 열 및 OLE DB Driver for SQL Server 사용자 시나리오
다음 표에는 스파스 열을 사용하는 OLE DB Driver for SQL Server 사용자의 일반적인 사용자 시나리오가 요약되어 있습니다.
시나리오 | 동작 |
---|---|
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 스키마 행 집합의 SS_IS_SPARSE 열을 확인합니다(OLE DB). |
열이 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에 대한 queryout 동작입니다. | 명시적으로 명명된 열의 처리는 이전 버전의 OLE DB Driver for SQL Server와 동일합니다. 스키마가 서로 다른 테이블 간의 가져오기 및 내보내기가 포함된 시나리오의 경우 특수 처리가 필요할 수도 있습니다. BCP에 대한 자세한 내용은 이 항목의 뒤에 나오는 스파스 열에 대한 BCP(대량 복사) 지원을 참조하십시오. |
하위 수준 클라이언트 동작
하위 수준 클라이언트는 SQLColumns 및 DBSCHMA_COLUMNS에 대해 스파스 column_set의 멤버가 아닌 열에 대해서만 메타데이터를 반환합니다.
하위 수준 클라이언트는 스파스 column_set의 멤버인 열에 이름으로 액세스할 수 있습니다. column_set 열은 XML 열로 SQL Server 2005(9.x) 클라이언트에 액세스할 수 있습니다.
스파스 열에 대한 BCP(대량 복사) 지원
스파스 열이나 column_set 기능과 관련해서는 OLE DB의 BCP API에 변경된 사항이 없습니다.
테이블에 column_set이 있으면 스파스 열이 별개의 열로 처리되지 않습니다. 모든 스파스 열의 값은 column_set 값에 포함되며 이 값은 XML 열과 동일한 방식으로 내보내집니다. 즉, 이진 형식으로 바인딩된 경우에는 varbinary(max) 를 사용하고, char 또는 wchar 형식으로 바인딩된 경우에는 nvarchar(max) 를 사용합니다. 가져올 때 column_set 값이 column_set의 스키마를 준수해야 합니다.
queryout 작업의 경우 명시적으로 참조된 열의 처리 방법에는 변경된 사항이 없습니다. column_set 열은 XML 열과 동작이 같고 스파스 열인지 여부는 명명된 스파스 열의 처리에 어떠한 영향도 주지 않습니다.
그러나 내보내기 작업에 queryout을 사용하고 스파스 열 집합의 멤버인 스파스 열을 이름으로 참조하는 경우 구조가 비슷한 테이블에는 직접 내보낼 수 없습니다. 이는 BCP가 가져오기 작업에서 select * 작업과 일치하는 메타데이터를 사용하는데 column_set 멤버 열을 이 메타데이터와 일치시킬 수 없기 때문입니다. column_set 멤버 열을 개별적으로 가져오려면 원하는 column_set 열을 참조하는 뷰를 테이블에서 정의한 다음, 이 뷰를 사용해 가져오기 작업을 수행해야 합니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기