다음을 통해 공유


SQL Server Native Client에서 스파스 열 지원

SQL Server Native Client는 스파스 열을 지원합니다. SQL Server의 스파스 열에 대한 자세한 내용은 스파스 열 사용 및 집합 사용을 참조하세요.

SQL Server Native Client 의 스파스 열 지원에 대한 자세한 내용은 ODBC(스파스 열 지원)스파스 열 지원(OLE DB)을 참조하세요.

이 기능을 보여 주는 샘플 애플리케이션에 대한 자세한 내용은 SQL Server 데이터 프로그래밍 샘플을 참조하세요.

스파스 열 및 SQL Server Native Client에 대한 사용자 시나리오

다음 표에는 스파스 열이 있는 SQL Server Native Client 사용자의 일반적인 사용자 시나리오가 요약되어 있습니다.

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

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

이렇게 하면 열의 column_set멤버인 열에 대한 메타데이터가 반환되지 않습니다.
스파스 또는 멤버 자격에 관계없이 모든 열에 대한 메타데이터를 column_set검색합니다. 이 경우 많은 수의 행이 반환될 수 있습니다. 설명자 필드 SQL_SOPT_SS_NAME_SCOPE SQL_SS_NAME_SCOPE_EXTENDED 설정하고 ODBC(SQLColumns)를 호출 합니다 .

OLE DB(DBSCHEMA_COLUMNS_EXTENDED 스키마 행 집합)에 대해 IDBSchemaRowset::GetRowset을 호출합니다.

이 시나리오는 SQL Server 2008 이전 릴리스에서 SQL Server Native Client를 사용하는 애플리케이션에서는 불가능합니다. 그러나 이러한 애플리케이션은 시스템 뷰를 직접 쿼리할 수 있습니다.
의 멤버인 열에 대해서만 메타데이터를 column_set검색합니다. 이 경우 많은 수의 행이 반환될 수 있습니다. 설명자 필드 SQL_SOPT_SS_NAME_SCOPE 설정하여 SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET SQLColumns(ODBC)를 호출합니다.

OLE DB(DBSCHEMA_SPARSE_COLUMN_SET 스키마 행 집합)에 대해 IDBSchemaRowset::GetRowset을 호출합니다.

이 시나리오는 SQL Server 2008 이전 릴리스에서 SQL Server Native Client를 사용하는 애플리케이션에서는 불가능합니다. 그러나 이러한 애플리케이션은 시스템 뷰를 쿼리할 수 있습니다.
열이 스파스인지 여부를 확인합니다. ODBC(SQLColumns 결과 집합)의 SS_IS_SPARSE 열을 참조하세요.

DBSCHEMA_COLUMNS 스키마 행 집합(OLE DB)의 SS_IS_SPARSE 열을 참조하세요.

이 시나리오는 SQL Server 2008 이전 릴리스에서 SQL Server Native Client를 사용하는 애플리케이션에서는 불가능합니다. 그러나 이러한 애플리케이션은 시스템 뷰를 쿼리할 수 있습니다.
열이 .인지 확인합니다 column_set. SQLColumns 결과 집합의 SS_IS_COLUMN_SET 열을 참조하세요. 또는 ODBC(SQL Server 특정 열 특성 SQL_CA_SS_IS_COLUMN_SET)를 참조하세요.

DBSCHEMA_COLUMNS 스키마 행 집합의 SS_IS_COLUMN_SET 열을 참조하세요. 또는 IColumnsRowset::GetColumnsRowset에서 반환된 행 집합에서 IColumnsinfo::GetColumnInfo 또는 DBCOLUMNFLAGS에서 반환된 dwFlags를 참조하세요. 열의 경우 column_set DBCOLUMNFLAGS_SS_ISCOLUMNSET 설정됩니다(OLE DB).

이 시나리오는 SQL Server 2008 이전 릴리스에서 SQL Server Native Client를 사용하는 애플리케이션에서는 불가능합니다. 그러나 이러한 애플리케이션은 시스템 뷰를 쿼리할 수 있습니다.
없는 테이블에 column_set대한 BCP별 스파스 열 가져오기 및 내보내기 이전 버전의 SQL Server Native Client의 동작은 변경되지 않습니다.
와 테이블에 대한 BCP별 스파스 열 가져오기 및 내보내기 column_set XML column_set 과 같은 방식으로 가져오고 내보냅니다. 즉, 이진 형식으로 바인딩된 것처럼 varbinary(max) 또는 wchar 형식으로 char 바인딩된 것처럼 nvarchar(max) 표시됩니다.

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

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

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

하위 수준 클라이언트 동작

하위 수준 클라이언트는 SQLColumns 및 DBSCHMA_COLUMNS 스파스의 column_set 멤버가 아닌 열에 대해서만 메타데이터를 반환합니다. SQL Server 2008 Native Client에 도입된 추가 OLE DB 스키마 행 집합은 사용할 수 없으며 SQL_SOPT_SS_NAME_SCOPE 통해 ODBC의 SQLColumns를 수정할 수도 없습니다.

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

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

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

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

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

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

또한 참조하십시오

SQL Server Native Client 프로그래밍