Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
SQL Server Native Client prend en charge les colonnes éparses. Pour plus d’informations sur les colonnes éparses dans SQL Server, consultez Utiliser des colonnes éparses et Utiliser des jeux de colonnes.
Pour plus d’informations sur la prise en charge des colonnes éparses dans SQL Server Native Client, consultez Prise en charge des colonnes éparses (ODBC) et Prise en charge des colonnes éparses (OLE DB).
Pour plus d’informations sur les exemples d’applications qui illustrent cette fonctionnalité, consultez les exemples de programmation de données SQL Server.
Scénarios utilisateur pour les colonnes éparses et SQL Server Native Client
Le tableau suivant récapitule les scénarios d’utilisateur courants pour les utilisateurs SQL Server Native Client avec des colonnes éparses :
| Scénario | Comportement |
|---|---|
| sélectionnez * dans la table ou IOpenRowset::OpenRowset. | Retourne toutes les colonnes qui ne sont pas membres de l’éparse column_set, ainsi qu’une colonne XML qui contient les valeurs de toutes les colonnes non null qui sont membres de l’éparse column_set. |
| Référencer une colonne par nom. | La colonne peut être référencée indépendamment de son état de colonne éparse ou column_set de son appartenance. |
Accéder aux column_set colonnes membres via une colonne XML calculée. |
Les colonnes qui sont membres de l’éparse column_set sont accessibles en sélectionnant le column_set nom et peuvent avoir des valeurs insérées et mises à jour en mettant à jour le code XML dans la column_set colonne.La valeur doit être conforme au schéma des column_set colonnes. |
| Récupérer les métadonnées de toutes les colonnes d’une table via SQLColumns avec un modèle de recherche de colonne null ou '%' (ODBC) ; ou via l’ensemble de lignes de schéma DBSCHEMA_COLUMNS sans restriction de colonne (OLE DB). | Retourne une ligne pour toutes les colonnes qui ne sont pas membres d’un column_set. Si la table a un éparse column_set, une ligne est retournée pour elle.Notez que cela ne retourne pas de métadonnées pour les colonnes membres d’un column_set. |
Récupérez les métadonnées de toutes les colonnes, quel que soit l’éparse ou l’appartenance à un column_set. De très nombreuses lignes peuvent alors être retournées. |
Définissez le champ descripteur SQL_SOPT_SS_NAME_SCOPE sur SQL_SS_NAME_SCOPE_EXTENDED et appelez SQLColumns (ODBC). Appelez IDBSchemaRowset ::GetRowset pour l’ensemble de lignes de schéma DBSCHEMA_COLUMNS_EXTENDED (OLE DB). Ce scénario n’est pas possible à partir d’une application qui utilise SQL Server Native Client à partir d’une version antérieure à SQL Server 2008. Toutefois, une telle application peut interroger directement les vues système. |
Récupérez les métadonnées uniquement pour les colonnes membres d’un column_set. De très nombreuses lignes peuvent alors être retournées. |
Définissez le champ descripteur SQL_SOPT_SS_NAME_SCOPE sur SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET et appelez SQLColumns (ODBC). Appelez IDBSchemaRowset ::GetRowset pour l’ensemble de lignes de schéma DBSCHEMA_SPARSE_COLUMN_SET (OLE DB). Ce scénario n’est pas possible à partir d’une application qui utilise SQL Server Native Client à partir d’une version antérieure à SQL Server 2008. Toutefois, une telle application offre la possibilité d'interroger les vues système. |
| Déterminer si une colonne est éparse. | Consultez la colonne SS_IS_SPARSE du jeu de résultats SQLColumns (ODBC). Consultez la colonne SS_IS_SPARSE de l'ensemble de lignes de schéma DBSCHEMA_COLUMNS (OLE DB). Ce scénario n’est pas possible à partir d’une application qui utilise SQL Server Native Client à partir d’une version antérieure à SQL Server 2008. Toutefois, une telle application offre la possibilité d'interroger les vues système. |
Déterminez si une colonne est un column_set. |
Consultez la colonne SS_IS_COLUMN_SET du jeu de résultats SQLColumns. Vous pouvez également consulter l’attribut de colonne spécifique à SQL Server SQL_CA_SS_IS_COLUMN_SET (ODBC). Consultez la colonne SS_IS_COLUMN_SET de l'ensemble de lignes de schéma DBSCHEMA_COLUMNS Ou consultez dwFlags retourné par IColumnsinfo::GetColumnInfo ou DBCOLUMNFLAGS dans l’ensemble de lignes retourné par IColumnsRowset::GetColumnsRowset. Pour column_set les colonnes, DBCOLUMNFLAGS_SS_ISCOLUMNSET sera définie (OLE DB).Ce scénario n’est pas possible à partir d’une application qui utilise SQL Server Native Client à partir d’une version antérieure à SQL Server 2008. Toutefois, une telle application offre la possibilité d'interroger les vues système. |
Importer et exporter des colonnes éparses par BCP pour une table sans column_set. |
Aucune modification du comportement des versions précédentes de SQL Server Native Client. |
Importer et exporter des colonnes éparses par BCP pour une table avec un column_set. |
L’objet column_set est importé et exporté de la même façon que XML ; autrement dit, comme s’il est lié en tant que varbinary(max) type binaire, ou comme s’il est lié en tant que nvarchar(max)char type ou wchar .Les colonnes qui sont membres de l’éparse column_set ne sont pas exportées en tant que colonnes distinctes ; elles ne sont exportées que dans la valeur du column_set. |
queryout comportement pour BCP. |
Aucune modification de la gestion des colonnes nommées explicitement à partir des versions précédentes de SQL Server Native Client. Les scénarios impliquant des opérations d'importation et d'exportation entre les tables avec des schémas différents peuvent nécessiter une gestion spéciale. Pour plus d'informations sur BCP, consultez la section « Prise en charge de la copie en bloc (BCP) pour les colonnes éparses » plus loin dans cette rubrique. |
Comportement de client de bas niveau
Les clients de bas niveau retournent des métadonnées uniquement pour les colonnes qui ne sont pas membres de l’éparse column_set pour SQLColumns et DBSCHMA_COLUMNS. Les ensembles de lignes de schéma OLE DB supplémentaires introduits dans SQL Server 2008 Native Client ne seront pas disponibles, ni les modifications apportées à SQLColumns dans ODBC via SQL_SOPT_SS_NAME_SCOPE.
Les clients de bas niveau peuvent accéder aux colonnes membres de l’éparse column_set par nom, et la column_set colonne sera accessible en tant que colonne XML aux clients SQL Server 2005.
Prise en charge de la copie en bloc (BCP) pour les colonnes éparses
Aucune modification n’est apportée à l’API BCP dans ODBC ou OLE DB pour les colonnes ou column_set fonctionnalités éparses.
Si une table a des column_setcolonnes éparses ne sont pas gérées en tant que colonnes distinctes. Les valeurs de toutes les colonnes éparses sont incluses dans la valeur du column_set, qui est exportée de la même façon qu’une colonne XML ; autrement dit, comme si liée en tant que varbinary(max) type binaire, ou comme si liée en tant que nvarchar(max)char type ou wchar ). Lors de l’importation, la column_set valeur doit être conforme au schéma du column_set.
Pour queryout les opérations, il n’existe aucune modification de la façon dont les colonnes référencées explicitement sont gérées.
column_set les colonnes ont le même comportement que les colonnes XML et l’éparseness n’a aucun effet sur la gestion des colonnes éparses nommées.
Toutefois, si queryout elle est utilisée pour l’exportation et que vous référencez des colonnes éparses qui sont membres de la colonne éparse définie par nom, vous ne pouvez pas effectuer une importation directe dans une table structurée de la même façon. Cela est dû au fait que BCP utilise des métadonnées cohérentes avec une opération select * pour l’importation et ne peut pas correspondre column_set aux colonnes membres avec ces métadonnées. Pour importer column_set des colonnes membres individuellement, vous devez définir une vue sur la table qui référence les colonnes souhaitées column_set , et vous devez effectuer l’opération d’importation à l’aide de la vue.