Delen via


BLOBs en OLE-objecten

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

OLE DB-stuurprogramma downloaden

De OLE DB-driver voor SQL Server stelt de ISequentialStream-interface beschikbaar om consumententoegang te ondersteunen tot SQL Server ntext, text1, image, varchar(max),nvarchar(max), varbinary(max) en xml-datatypes als binaire grote objecten (BLOBs). De Read-methode op ISequentialStream stelt de consument in staat veel data in beheersbare stukken op te halen.

[1]: Het gebruik van de ISequentialStream-interface voor het invoegen van UTF-8-gecodeerde gegevens in een legacy-tekstkolom is alleen beperkt tot servers die UTF-8 ondersteunen. Een poging om dit scenario uit te voeren bij het targeten van een server die UTF-8 niet ondersteunt, zal resulteren in de driver die het volgende foutbericht geeft: "Streaming niet ondersteund over het geselecteerde kolomtype".

Voor een voorbeeld dat deze functie demonstreert, zie Set Large Data (OLE DB).

De OLE DB-driver voor SQL Server kan een door consumenten geïmplementeerde IStorage-interface gebruiken wanneer de consument de interfacepointer in een accessor levert die gebonden is aan datawijziging.

Voor datatypes met grote waarde controleert de OLE DB Driver voor SQL Server op typegrootte-aannames in IRowset- en DDL-interfaces. Kolommen met varchar-, nvarchar- en varbinaire datatypes en maximale grootte op onbeperkt worden weergegeven als ISLONG via de schema-rijsets en via interfaces die kolomdatatypes teruggeven.

De OLE DB Driver voor SQL Server stelt de typen varchar(max), varbinary(max) en nvarchar(max) respectievelijk als DBTYPE_STR, DBTYPE_BYTES en DBTYPE_WSTR beschikbaar.

Om met deze typen te werken, heeft een applicatie de volgende opties:

  • Bind als het type (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Als de buffer niet groot genoeg is, zal er afkapping optreden, precies zoals bij deze typen in eerdere versies (hoewel nu grotere waarden beschikbaar zijn).

  • Bind als type en specificeer ook DBTYPE_BYREF.

  • Bind als DBTYPE_IUNKNOWN en gebruik streaming.

Indien gebonden aan DBTYPE_IUNKNOWN, wordt ISequentialStream-stroomfunctionaliteit gebruikt. De OLE DB Driver voor SQL Server ondersteunt het binden van outputparameters als DBTYPE_IUNKNOWN voor datatypes met grote waardes. Dit is om scenario's te ondersteunen waarin een opgeslagen procedure deze datatypes als retourwaarden terugstuurt, die vervolgens als DBTYPE_IUNKNOWN naar de client worden teruggegeven.

Beperkingen van opslagobjecten

  • De OLE DB-driver voor SQL Server kan slechts één open opslagobject ondersteunen. Pogingen om meer dan één opslagobject te openen (om een referentie te krijgen op meer dan één ISequentialStream-interfacepointer ) leveren DBSTATUS_E_CANTCREATE terug.

  • In de OLE DB-driver voor SQL Server is de standaardwaarde van de DBPROP_BLOCKINGSTORAGEOBJECTS read-only eigenschap VARIANT_TRUE. Daarom zullen sommige methoden (anders dan methoden op de opslagobjecten) falen met E_UNEXPECTED als een opslagobject actief is.

  • De lengte van de data die door een door consumenten geïmplementeerd opslagobject wordt gepresenteerd, moet bekend worden gemaakt aan de OLE DB-driver voor SQL Server wanneer de rij-accessor die naar het opslagobject verwijst wordt aangemaakt. De consument moet een lengte-indicator binden in de DBBINDING-structuur die wordt gebruikt voor het aanmaken van accessoren.

  • Als een rij meer dan één grote datawaarde bevat en DBPROP_ACCESSORDER niet DBPROPVAL_AO_RANDOM is, moet de consument ofwel een OLE DB Driver voor SQL Server-cursorondersteunde rijset gebruiken om rijgegevens op te halen, of alle grote datawaarden verwerken voordat andere rijwaarden worden opgehaald. Als DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM is, cachet de OLE DB Driver voor SQL Server alle xml-datatypes als binaire grote objecten (BLOBs) zodat deze in willekeurige volgorde toegankelijk zijn.

In deze sectie

Zie ook

OLE DB-stuurprogramma voor SQL Server-programmering
Gebruik van Grote Waarde Types