BLOBs och OLE-objekt

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Microsoft Fabric

Ladda ned OLE DB-drivrutins

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

[1]: Användningen av ISequentialStream-gränssnittet för att infoga UTF-8-kodad data i en äldre textkolumn är endast begränsad till servrar som stödjer UTF-8. Ett försök att köra detta scenario när man riktar in sig på en server som inte stödjer UTF-8 kommer att resultera i att drivrutinen skickar följande felmeddelande: "Streaming inte stöds över den valda kolumntypen".

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

OLE DB-drivrutinen för SQL Server 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 stora värden kontrollerar OLE DB-drivrutinen för SQL Server typstorleksantaganden i IRowset- och DDL-gränssnitt. Kolumner som har varchar-, nvarchar- och varbinärdatatyper och maxstorlek satt till obegränsad kommer att representeras som ISLONG genom schema-radmängder och via gränssnitt som returnerar kolumndatatyper.

OLE DB-drivrutinen för SQL Server 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. OLE DB-drivrutinen för SQL Server stöder bindning av utdataparametrar som DBTYPE_IUNKNOWN för datatyper med stora värden. Detta är för att stödja scenarier där en lagrad proprodur returnerar dessa datatyper som returvärden, vilka sedan returneras som DBTYPE_IUNKNOWN till klienten.

Begränsningar för lagringsobjekt

  • OLE DB-drivrutinen för SQL Server 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 OLE DB-drivrutinen för SQL Server är standardvärdet för DBPROP_BLOCKINGSTORAGEOBJECTS skrivskyddad egenskap VARIANT_TRUE. Därför, om ett lagringsobjekt är aktivt, kommer vissa metoder (förutom metoder på lagringsobjekten) att misslyckas med E_UNEXPECTED.

  • Storleken på data som presenteras av ett konsumentimplementerat lagringsobjekt måste göras känd för OLE DB-drivrutinen för SQL Server 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 OLE DB-drivrutin för SQL Server-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 OLE DB-drivrutinen för SQL Server alla xml-datatyper som binära stora objekt (BLOBs) så att de kan nås i valfri ordning.

I det här avsnittet

Se även

OLE DB-drivrutin för SQL Server Programming
Användning av stora värdetyper