Prise en charge des colonnes éparses (OLE DB)
Cette rubrique fournit des informations sur la prise en charge OLE DB de SQL Server Native Client pour les colonnes éparses. Pour plus d’informations sur les colonnes éparses, consultez Prise en charge des colonnes éparses dans SQL Server Native Client. Pour consulter un exemple, voir Afficher les métadonnées de colonne et de catalogue pour les colonnes éparses (OLE DB).
Métadonnées d'instruction OLE DB
À compter de SQL Server 2008, une nouvelle valeur d’indicateur DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET, est disponible. Cette valeur doit être définie pour les colonnes qui sont des valeurs column_set
. L’indicateur DBCOLUMNFLAGS peut être récupéré via le paramètre dwFlags de IColumnsInfo::GetColumnsInfo et la colonne DBCOLUMN_FLAGS de l’ensemble de lignes retourné par IColumnsRowset::GetColumnsRowset.
Métadonnées de catalogue OLE DB
Deux colonnes supplémentaires spécifiques à SQL Server ont été ajoutées à DBSCHEMA_COLUMNS.
Nom de la colonne | Type de données | Valeur/commentaires |
---|---|---|
SS_IS_SPARSE | DBTYPE_BOOL | Si la colonne est une colonne éparse, la valeur est VARIANT_TRUE ; sinon, VARIANT_FALSE. |
SS_IS_COLUMN_SET | DBTYPE_BOOL | Si la colonne est la colonne column_set éparse, la valeur est VARIANT_TRUE ; sinon, VARIANT_FALSE. |
Deux ensembles de lignes de schéma supplémentaires ont également été ajoutés. Ces ensembles de lignes ont la même structure que DBSCHEMA_COLUMNS mais retournent un contenu différent. DBSCHEMA_COLUMNS_EXTENDED retourne toutes les colonnes indépendamment de l'appartenance à column_set
. DBSCHEMA_SPARSE_COLUMN_SET retourne uniquement les colonnes qui sont membres du column_set
éparse.
Comportement OLE DB de DataTypeCompatibility
Le comportement avec DataTypeCompatibility=80
(dans le chaîne de connexion) est cohérent avec un client SQL Server 2000, comme suit :
Les nouveaux ensembles de lignes de schéma ne sont pas visibles, et il n'y a pas de lignes pour eux dans l'ensemble de lignes d'ensembles de lignes de schéma.
Les nouvelles colonnes de l'ensemble de lignes COLUMNS ne sont pas visibles.
DBCOLUMNFLAGS_SS_ISCOLUMNSET n'est pas défini pour les colonnes
column_set
.DBCOMPUTEMODE_NOTCOMPUTED est défini pour les colonnes
column_set
.
Prise en charge OLE DB des colonnes éparses
Les interfaces OLE DB suivantes ont été modifiées dans SQL Server Native Client pour prendre en charge les colonnes éparses :
Type ou fonction membre | Description |
---|---|
IColumnsInfo::GetColumnsInfo | Une nouvelle valeur d’indicateur DBCOLUMNFLAGS DBCOLUMNFLAGS_SS_ISCOLUMNSET est définie pour column_set les colonnes dans dwFlags.DBCOLUMNFLAGS_WRITE est défini pour les colonnes column_set . |
IColumsRowset::GetColumnsRowset | Une nouvelle valeur d'indicateur DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET, est définie pour les colonnes column_set dans DBCOLUMN_FLAGS.DBCOLUMN_COMPUTEMODE est défini à DBCOMPUTEMODE_DYNAMIC pour les colonnes column_set . |
IDBSchemaRowset::GetSchemaRowset | DBSCHEMA_COLUMNS retourne deux nouvelles colonnes : SS_IS_COLUMN_SET et SS_IS_SPARSE. DBSCHEMA_COLUMNS retourne uniquement les colonnes qui ne sont pas membres de column_set .Deux nouveaux ensembles de lignes de schéma ont été ajoutés : DBSCHEMA_COLUMNS_EXTENDED retourne toutes les colonnes indépendamment du caractère éparse de l'appartenance à column_set . DBSCHEMA_SPARSE_COLUMN_SET retourne uniquement les colonnes qui sont membres de column_set . Ces nouveaux ensembles de lignes ont les mêmes colonnes et restrictions que DBSCHEMA_COLUMNS. |
IDBSchemaRowset::GetSchemas | IDBSchemaRowset::GetSchemas inclut les GUID des nouveaux ensembles de lignes DBSCHEMA_COLUMNS_EXTENDED et DBSCHEMA_SPARSE_COLUMN_SET dans la liste des ensembles de lignes de schéma disponibles. |
ICommand::Execute | Si l’option * de la table est utilisée, elle retourne toutes les colonnes qui ne sont pas membres de l’éparsecolumn_set , ainsi qu’une colonne XML qui contient des valeurs de toutes les colonnes non null qui sont membres de l’éparsecolumn_set , le cas échéant. |
IOpenRowset::OpenRowset | IOpenRowset::OpenRowset retourne un ensemble de lignes avec les mêmes colonnes que ICommand::Execute, avec une requête select * sur la même table. |
ITableDefinition | Il n'y a aucune modification de cette interface pour les colonnes éparses ou les colonnes column_set . Les applications qui doivent effectuer des modifications de schéma doivent exécuter le Transact-SQL approprié directement. |