Freigeben über


BLOBs und OLE-Objekte in SQL Server Native Client

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

Der OLE DB-Anbieter von SQL Server Native Client macht die ISequentialStream-Schnittstelle verfügbar, um den Consumerzugriff auf SQL Server ntext, Text, Image, varchar(max), nvarchar(max), varbinary(max) und XML-Datentypen als binäre große Objekte (BLOBs) zu unterstützen. Die Methode Read für ISequentialStream ermöglicht dem Consumer, große Datenmengen in überschaubaren Abschnitten abzurufen.

Ein Beispiel für diese Feature finden Sie unter Festlegen von großen Daten (OLE DB).

Der OLE DB-Anbieter von SQL Server Native Client kann eine vom Consumer implementierte IStorage-Schnittstelle verwenden, wenn der Consumer den Schnittstellenzeiger in einem Accessor bereitstellt, der für die Datenänderung gebunden ist.

Bei Datentypen mit großen Werten sucht der OLE DB-Anbieter von SQL Server Native Client nach Typgrößenannahmen in IRowset - und DDL-Schnittstellen. Spalten mit varchar-, nvarchar- und varbinary-Datentypen, deren maximale Größe auf "unbegrenzt" festgelegt ist, werden als ISLONG über die Schema-Rowsets und Schnittstellen dargestellt, die Spaltendatentypen zurückgeben.

Der OLE DB-Anbieter von SQL Server Native Client macht die Typen varchar(max), varbinary(max) und nvarchar(max) als DBTYPE_STR, DBTYPE_BYTES und DBTYPE_WSTR verfügbar.

Um mit diesen Typen zu arbeiten, hat eine Anwendung die folgenden Optionen:

  • Als den betreffenden Typ binden (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Wenn der Puffer nicht groß genug ist, werden Daten abgeschnitten, wie dies auch in früheren Versionen der Fall war (obwohl jetzt umfangreichere Werte verfügbar sind).

  • Als den betreffenden Typ binden und zudem DBTYPE_BYREF angeben

  • Als DBTYPE_IUNKNOWN binden und Streaming verwenden

Wenn die Bindung an DBTYPE_IUNKNOWN erfolgt, wird die Streamingfunktion ISequentialStream verwendet. Der OLE DB-Anbieter von SQL Server Native Client unterstützt Bindungsausgabeparameter als DBTYPE_IUNKNOWN für große Datentypen, um Szenarien zu vereinfachen, in denen eine gespeicherte Prozedur diese Datentypen als Rückgabewerte zurückgibt, die als DBTYPE_IUNKNOWN für den Client verfügbar gemacht werden.

Speicherobjekteinschränkungen

  • Der OLE DB-Anbieter von SQL Server Native Client kann nur ein einzelnes offenes Speicherobjekt unterstützen. Wenn versucht wird, mehrere Speicherobjekte zu öffnen (um einen Verweis auf mehrere ISequentialStream-Schnittstellenzeiger abzurufen), wird DBSTATUS_E_CANTCREATE zurückgegeben.

  • Im SQL Server Native Client OLE DB-Anbieter ist der Standardwert der DBPROP_BLOCKINGSTORAGEOBJECTS schreibgeschützte Eigenschaft VARIANT_TRUE. Das zeigt an, dass einige Methoden (solche, die sich nicht in den Speicherobjekten befinden) mit E_UNEXPECTED fehlschlagen, wenn ein Speicherobjekt aktiv ist.

  • Die Länge der Daten, die von einem vom Verbraucher implementierten Speicherobjekt angezeigt werden, muss dem OLE DB-Anbieter von SQL Server Native Client bekannt gemacht werden, wenn der Zeilenzugriffsor, der auf das Speicherobjekt verweist, erstellt wird. Der Consumer muss einen Längenindikator in der zur Accessorerstellung verwendeten DBBINDING-Struktur binden.

  • Wenn eine Zeile mehr als einen einzelnen großen Datenwert enthält und DBPROP_ACCESSORDER nicht DBPROPVAL_AO_RANDOM ist, muss der Consumer entweder ein CURSOR-unterstütztes SQL Server Native Client OLE DB-Rowset verwenden, um Zeilendaten abzurufen oder alle großen Datenwerte zu verarbeiten, bevor andere Zeilenwerte abgerufen werden. Wenn DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM ist, speichert der OLE DB-Anbieter des SQL Server Native Client alle XML-Datentypen als binäre große Objekte (BLOBs) zwischen, sodass in beliebiger Reihenfolge darauf zugegriffen werden kann.

In diesem Abschnitt

Weitere Informationen

SQL Server Native Client (OLE DB)
Verwenden von Datentypen mit umfangreichen Werten