Partager via


Objets BLOB et OLE

Le fournisseur OLE DB SQL Server Native Client expose l'interface ISequentialStream pour prendre en charge l'accès des consommateurs aux types de données ntextSQL Server, text, image, varchar(max), nvarchar(max), **varbinary(max)**et XML comme objets BLOB. La méthode Read sur ISequentialStream permet au consommateur de récupérer un grand nombre de données en segments maniables.

Pour un exemple qui illustre cette fonctionnalité, consultez l'exemple de OLE DB pour la définition de données volumineuses, disponible sur CodePlex ; consultez Exemples pour le moteur de base de données SQL Server pour plus d'informations.

Le fournisseur OLE DB SQL Server Native Client peut utiliser une interface IStorage implémentée par le consommateur lorsque celui-ci fournit le pointeur d'interface dans un accesseur lié pour la modification des données.

Pour les types de données de valeur élevée, le fournisseur OLE DB SQL Server Native Client contrôle les hypothèses sur la taille de la police dans les interfaces IRowset et DDL. Les colonnes avec les types de données varchar, nvarchar et varbinary définis avec une taille maximale illimitée sont représentées comme ISLONG à travers les ensembles de lignes du schéma et les interfaces qui retournent les types de données des colonnes.

Le fournisseur OLE DB SQL Server Native Client expose respectivement les types varchar(max), varbinary(max) et nvarchar (max) comme DBTYPE_STR, DBTYPE_BYTES et DBTYPE_WSTR.

Pour travailler avec ces types une application possède les options suivantes :

  • Lier comme type (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Si la mémoire tampon n'est pas assez grande il s'ensuit une troncation, exactement comme pour ces types dans les précédentes versions (bien que de plus grandes valeurs soient maintenant disponibles).

  • Lier comme type et spécifier également DBTYPE_BYREF.

  • Lier comme DBTYPE_IUNKNOWN et utiliser la diffusion en continu.

En cas de liaison à DBTYPE_IUNKNOWN, la fonctionnalité de flux ISequentialStream est utilisée. Le fournisseur OLE DB SQL Server Native Client prend en charge la liaison des paramètres de sortie en tant que DBTYPE_IUNKNOWN pour les types de données de valeur élevée afin de simplifier les scénarios où une procédure stockée retourne ces types de données comme valeurs de retour exposées au client en tant que DBTYPE_IUNKNOWN.

Limitations des objets de stockage

  • Le fournisseur OLE DB SQL Server Native Client ne peut prendre en charge qu'un seul objet de stockage ouvert. Les tentatives d'ouverture de plusieurs objets de stockage (pour obtenir une référence sur plusieurs pointeurs d'interface ISequentialStream) retournent DBSTATUS_E_CANTCREATE.

  • Dans le fournisseur OLE DB SQL Server Native Client, la valeur par défaut de la propriété en lecture seule de DBPROP_BLOCKINGSTORAGEOBJECTS est VARIANT_TRUE. Cela signifie que si un objet de stockage est actif, certaines méthodes (autres que celles sur les objets de stockage) échouent avec E_UNEXPECTED.

  • Le fournisseur OLE DB SQL Server Native Client doit avoir connaissance de la longueur des données présentées par un objet de stockage implémenté par le consommateur lorsque l'accesseur de ligne qui référence l'objet de stockage est créé. Le consommateur doit lier un indicateur de longueur dans la structure DBBINDING utilisée pour la création de l'accesseur.

  • Si une ligne contient plus d'une valeur de données élevées et que DBPROP_ACCESSORDER n'est pas DBPROPVAL_AO_RANDOM, le consommateur doit utiliser un ensemble de lignes pris en charge par le curseur du fournisseur OLE DB SQL Server Native Client pour extraire les données de ligne ou traiter toutes les valeurs de données élevées avant d'extraire d'autres valeurs de ligne. Si DBPROP_ACCESSORDER a pour valeur DBPROPVAL_AO_RANDOM, le fournisseur OLE DB SQL Server Native Client met en cache tous les types de données XML comme objets BLOB afin qu'il soit possible d'y accéder dans n'importe quel ordre.