BLOBs och OLE-objekt i SQL Server Native Client

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

SQL Server Native Client OLE DB-leverantören exponerar ISequentialStream-gränssnittet för att stödja konsumentåtkomst till SQL Server ntext, text, image, varchar(max),nvarchar(max),varbinary(max) och xml-datatyper som binära stora objekt (BLOBs). Read-metoden på ISequentialStream låter konsumenten hämta mycket data i hanterbara bitar.

För ett exempel som demonstrerar denna funktion, se Set Large Data (OLE DB).

SQL Server Native Client OLE DB-leverantören kan använda ett konsumentimplementerat IStorage-gränssnitt när konsumenten tillhandahåller gränssnittspekaren i en accessor som är begränsad för datamodifiering.

För datatyper med stort värde kontrollerar SQL Server Native Client OLE DB-leverantören typstorleksantaganden i IRowset- och DDL-gränssnitten. Kolumner med varchar-, nvarchar- och varbinärdatatyper med maxstorlek satt till obegränsad representeras som ISLONG genom schema-raduppsättningar och gränssnitt som returnerar kolumndatatyper.

Den SQL Server Native Client OLE DB-leverantören exponerar varchar(max), varbinary(max) och nvarchar(max) typerna som DBTYPE_STR, DBTYPE_BYTES respektive DBTYPE_WSTR.

För att arbeta med dessa typer har en applikation följande alternativ:

  • Bind som typen (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Om bufferten inte är tillräckligt stor sker trunkering, precis som för dessa typer i tidigare versioner (även om större värden nu finns tillgängliga).

  • Bind som typen och specificera även DBTYPE_BYREF.

  • Bind som DBTYPE_IUNKNOWN och använd streaming.

Om den är bunden till DBTYPE_IUNKNOWN används ISequentialStream-strömfunktionalitet. Den inbyggda klient OLE DB-leverantören SQL Server stöder bindning av utgångsparametrar som DBTYPE_IUNKNOWN för stora värdedatatyper för att underlätta scenarier där en lagrad propuder returnerar dessa datatyper som returnervärden som exponeras som DBTYPE_IUNKNOWN för klienten.

Begränsningar för lagringsobjekt

  • SQL Server Native Client OLE DB-leverantören kan endast stödja ett enda öppet lagringsobjekt. Försök att öppna mer än ett lagringsobjekt (för att få en referens på mer än en ISequentialStream-gränssnittspekare ) returnerar DBSTATUS_E_CANTCREATE.

  • I SQL Server Native Client OLE DB-leverantören är standardvärdet för DBPROP_BLOCKINGSTORAGEOBJECTS skrivskyddad egenskap VARIANT_TRUE. Detta indikerar att om ett lagringsobjekt är aktivt, kommer vissa metoder (förutom de på lagringsobjekten) att misslyckas med E_UNEXPECTED.

  • Storleken på data som presenteras av ett konsumentimplementerat lagringsobjekt måste informeras för SQL Server Native Client OLE DB-leverantören när radaccessorn som refererar till lagringsobjektet skapas. Konsumenten måste binda en längdindikator i DBBINDING-strukturen som används för skapandet av accessorer.

  • Om en rad innehåller mer än ett enda stort datavärde och DBPROP_ACCESSORDER inte är DBPROPVAL_AO_RANDOM, måste konsumenten antingen använda en SQL Server Native Client OLE DB-leverantör med kursorstödd raduppsättning för att hämta raddata eller bearbeta alla stora datavärden innan andra radvärden hämtas. Om DBPROP_ACCESSORDER är DBPROPVAL_AO_RANDOM cachar den SQL Server Native Client OLE DB-leverantören alla xml-datatyper som binära stora objekt (BLOBs) så att de kan nås i valfri ordning.

I det här avsnittet