Megosztás a következőn keresztül:


BLOB-ok és OLE objektumok

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

OLE DB-illesztő letöltése

Az SQL Server OLE DB Driver az ISequentialStream interfészt lehetővé teszi, hogy támogassa a fogyasztói hozzáférést SQL Server ntext, text1, image, varchar(max), nvarchar(max), varbinary(max) és xml adattípusokhoz, mint bináris nagy objektumok (BLOB-ok). Az ISequentialStreamolvasási módszere lehetővé teszi a fogyasztó számára, hogy sok adatot kezelhető részekben szerezzen le.

[1]: Az ISequentialStream interfész használata az UTF-8 kódolt adatok örökös szövegoszlopba való beillesztésére csak olyan szerverekre korlátozódik, amelyek támogatják az UTF-8-at. Ha megpróbáljuk végrehajtani ezt a forgatókönyvet, amikor olyan szervert célozunk, amely nem támogatja az UTF-8-at, az illesztőprogram a következő hibaüzenetet adja meg: "Streaming nem támogatott a kiválasztott oszloptípuson".

Ezt a funkciót bemutató példáért lásd: Nagy adat halmazolása (OLE DB).

Az SQL Server OLE DB Driver használhat egy fogyasztó által megvalósított IStorage interfészt, amikor a felhasználó az interfész mutatót egy adatmódosításra tervezett hozzáférésű felületen adja.

Nagy értékű adattípusok esetén az OLE DB Driver for SQL Server ellenőrzi a típusméret feltételezéseket IRowset és DDL interfészekben. Azok az oszlopok, amelyek varchar, nvarchar és varbináris adattípusúak, valamint maximális méretük korlátlan, ISLONG-ként jelennek meg a séma sorhalmazokon és az oszlop-adattípusokat visszaadó interfészeken keresztül.

Az SQL Server OLE DB Driver a varchar(max), varbinary(max) és nvarchar(max) típusokat DBTYPE_STR, DBTYPE_BYTES és DBTYPE_WSTR formátumúként mutatja be.

Ezekkel a típusokkal való együttműködéshez az alkalmazás a következő opciókkal rendelkezik:

  • A bind típus (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Ha a puffer nem elég nagy, akkor csonkítás történik, pontosan úgy, mint a korábbi kiadásokban (bár nagyobb értékek is elérhetők).

  • Bind típusként, és megadja DBTYPE_BYREF.

  • Bind as DBTYPE_IUNKNOWN és használj streaminget.

Ha DBTYPE_IUNKNOWN-re van kötve, akkor az ISequentialStream stream funkciót használják. Az SQL Server OLE DB Driver támogatja a kimeneti paraméterek DBTYPE_IUNKNOWN kötését nagy értékű adattípusok esetén. Ez olyan helyzeteket támogat, amikor egy tárolt eljárás visszaadja ezeket az adattípusokat visszaküldési értékként, amelyeket DBTYPE_IUNKNOWN módon küldenek vissza az ügyfélnek.

Tárolási objektum korlátai

  • Az SQL Server OLE DB illesztőprogramja csak egyetlen nyitott tárolóobjektumot tud támogatni. Ha több tárolóobjektum megnyitására próbálkoznak (hogy több ISequentialStream interfész mutatóhoz referenciát kapjunk) DBSTATUS_E_CANTCREATE-et adnak.

  • Az SQL Server OLE DB Driver esetében a DBPROP_BLOCKINGSTORAGEOBJECTS csak olvasható tulajdonság alapértelmezett értéke VARIANT_TRUE. Ezért, ha egy tárolóobjektum aktív, bizonyos metódok (a tároló objektumokon lévő metódoktól eltérőek) E_UNEXPECTED esetén meghibásodik.

  • A fogyasztó által megvalósított tárolóobjektum által bemutatott adat hosszát az SQL Server OLE DB Driver számára kell tudni, amikor létrehozzák a tárolóobjektumot idéző sorhozzáférést. A fogyasztónak egy hosszjelzőt kell kötnie a hozzáférés létrehozásához használt DBBINDING struktúrában.

  • Ha egy sor több mint egyetlen nagy adatértéket tartalmaz, és DBPROP_ACCESSORDER nem DBPROPVAL_AO_RANDOM, akkor a fogyasztónak vagy OLE DB Driver for SQL Server kurzor-támogatott sorhalmazt kell használnia a soradatok lekéréséhez, vagy az összes nagy adatértéket fel kell dolgoznia, mielőtt más sorértékeket kérne. Ha DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM, az SQL Server OLE DB Driver az összes xml adattípust bináris nagy objektumként (BLOB-ként) gyorsalogázza, így bármilyen sorrendben elérhető legyen.

Ebben a részben

Lásd még:

OLE DB-illesztő sql serveres programozási
Nagy értéktípusok használata