Partage via


Objets BLOB et OLE dans SQL Server Native Client

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Le fournisseur OLE DB SQL Server Native Client expose l’interface ISequentialStream pour prendre en charge l’accès consommateur à SQL Server ntext, text, image, varchar(max), nvarchar(max), varbinary(max) et les types de données xml en tant qu’objets blob binaires. La méthode Read sur ISequentialStream permet au consommateur de récupérer un grand nombre de données en blocs maniables.

Pour obtenir un exemple illustrant cette fonctionnalité, consultez Définir des grandes données (OLE DB).

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

Pour les types de données de grande valeur, le fournisseur OLE DB SQL Server Native Client recherche les hypothèses de taille de type dans les interfaces IRowset et DDL. Les colonnes avec des types de données varchar, nvarchar et varbinary dont la taille maximale est définie sur illimitée seront représentées en tant qu’ISLONG via les ensembles de lignes de schéma et les interfaces retournant des types de données de colonne.

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

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 les paramètres de sortie de liaison comme DBTYPE_IUNKNOWN pour les types de données de grande valeur afin de faciliter les scénarios où une procédure stockée retourne ces types de données en tant que valeurs de retour qui seront exposées en tant que DBTYPE_IUNKNOWN au client.

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é DBPROP_BLOCKINGSTORAGEOBJECTS en lecture seule 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.

  • La longueur des données présentées par un objet de stockage implémenté par le consommateur doit être connue du fournisseur OLE DB SQL Server Native Client lorsque l’accesseur de ligne qui fait 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 volumineuse et DBPROP_ACCESSORDER n’est pas DBPROPVAL_AO_RANDOM, le consommateur doit utiliser un ensemble de lignes pris en charge par le fournisseur OLE DB SQL Server Native Client pour récupérer des données de ligne ou traiter toutes les valeurs de données volumineuses avant de récupérer d’autres valeurs de ligne. Si DBPROP_ACCESSORDER est DBPROPVAL_AO_RANDOM, le fournisseur OLE DB SQL Server Native Client met en cache tous les types de données xml en tant qu’objets blob (BINARY Large Objects) afin qu’il soit accessible dans n’importe quel ordre.

Dans cette section

Voir aussi

SQL Server Native Client (OLE DB)
Utilisation de types de valeur élevée