다음을 통해 공유


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의 멤버가 아닌 모든 열과 스파스 column_set의 null이 아닌 모든 열의 값이 포함된 XML 열을 반환합니다.
이름으로 열 참조 열이 스파스 열인지 또는 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 설정하고 SQLColumns (ODBC)를 호출합니다.

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

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

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

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

DBSCHEMA_COLUMNS 스키마 행 집합의 SS_IS_SPARSE 열을 확인합니다(OLE DB).

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

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

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

스파스 column_set의 멤버인 열은 별개의 열로 내보내지 않습니다. 이러한 열은 column_set의 값으로만 내보냅니다.
BCP에 대한 queryout 동작 이전 버전의 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 2005 클라이언트를 SQL Server XML 열로 열에 액세스할 수 있습니다.

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

스파스 열이나 column_set 기능과 관련해서는 ODBC나 OLE DB의 BCP API에 변경된 사항이 없습니다.

테이블에 column_set이 있으면 스파스 열이 별개의 열로 처리되지 않습니다. 모든 스파스 열의 값은 XML 열과 동일한 방식으로 내보내지는 값column_set, 즉 이진 형식으로 varbinary(max) 바인딩되거나 또는 wchar 형식으로 char 바인딩된 것처럼 nvarchar(max) 포함됩니다. 가져오는 경우 column_set 값은 column_set의 스키마를 따라야 합니다.

queryout 작업의 경우 명시적으로 참조된 열의 처리 방법에는 변경된 사항이 없습니다. column_set 열은 XML 열과 동작이 같고 스파스 열인지 여부는 명명된 스파스 열의 처리에 어떠한 영향도 주지 않습니다.

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

참고 항목

SQL Server Native Client 프로그래밍