BLOB e oggetti OLE in SQL Server Native Client

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Il provider OLE DB Native Client espone l'interfaccia ISequentialStream per supportare l'accesso consumer ai tipi di dati SQL Server SQL Server ntext, text, image, varchar(max), nvarchar(max), varbinary(max) e xml come OGGETTI BLOB (Binary Large Objects). Il metodo Read in ISequentialStream consente al consumer di recuperare una quantità elevata di dati in blocchi gestibili.

Per un esempio che illustra questa funzionalità, vedere Impostare dati di grandi dimensioni (OLE DB).

Il provider di OLE DB Native Client può usare un'interfaccia IStorage implementata dal consumer quando il consumer fornisce il puntatore a interfaccia in una funzione di accesso associata per SQL Server la modifica dei dati.

Per i tipi di dati con valori di grandi dimensioni, il provider OLE DB Native Client verifica i presupposti delle dimensioni dei tipi SQL Server nelle interfacce IRowset e DDL. Le colonne con tipi di dati varchar, nvarchar e varbinary con dimensioni massime impostate su unlimited verranno rappresentate come ISLONG tramite i set di righe dello schema e le interfacce che restituiscono tipi di dati di colonna.

Il provider OLE DB Native Client espone rispettivamente i tipi SQL Server varchar(max), varbinary(max) e nvarchar(max) come DBTYPE_STR, DBTYPE_BYTES e DBTYPE_WSTR.

In un'applicazione è possibile utilizzare questi tipi nei modi seguenti:

  • Eseguire l'associazione come tipo (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Se le dimensioni de buffer non sono sufficienti, si verificherà il troncamento, esattamente come accade per questi tipi nelle release precedenti, anche se ora sono disponibili valori più grandi.

  • Eseguire l'associazione come tipo e specificare DBTYPE_BYREF.

  • Eseguire l'associazione come DBTYPE_IUNKNOWN e utilizzare il flusso.

Se si esegue l'associazione a DBTYPE_IUNKNOWN, viene utilizzata la funzionalità di flusso di ISequentialStream. Il provider OLE DB di Native Client supporta l'associazione di parametri di output come DBTYPE_IUNKNOWN per tipi di dati con valori di grandi dimensioni per facilitare scenari in cui un stored procedure restituisce questi tipi di dati come valori restituiti che verranno esposti SQL Server come DBTYPE_IUNKNOWN al client.

Limitazioni degli oggetti di archiviazione

  • Il SQL Server provider di OLE DB Native Client può supportare solo un singolo oggetto di archiviazione aperto. I tentativi di aprire più di un oggetto di archiviazione (per ottenere un riferimento su più di un puntatore di interfaccia ISequentialStream) restituiscono DBSTATUS_E_CANTCREATE.

  • Nel provider di OLE DB Native Client il valore predefinito della proprietà DBPROP_BLOCKINGSTORAGEOBJECTS di sola lettura è SQL Server VARIANT_TRUE. Tale valore indica che se un oggetto di archiviazione è attivo, alcuni metodi (diversi da quelli degli oggetti di archiviazione) non riusciranno e verrà restituito E_UNEXPECTED.

  • La lunghezza dei dati presentati da un oggetto di archiviazione implementato dal consumer deve essere resa nota al provider OLE DB di Native Client quando viene creata la funzione di accesso alla riga che fa riferimento SQL Server all'oggetto di archiviazione. Il consumer deve associare un indicatore di lunghezza nella struttura DBBINDING utilizzata per la creazione della funzione di accesso.

  • Se una riga contiene più di un singolo valore di dati di grandi dimensioni e DBPROP_ACCESSORDER non è DBPROPVAL_AO_RANDOM, il consumer deve usare un set di righe supportato dal cursore del provider OLE DB Native Client per recuperare dati di riga o elaborare tutti i valori di dati di grandi dimensioni prima di recuperare altri valori SQL Server di riga. Se DBPROP_ACCESSORDER è DBPROPVAL_AO_RANDOM, il provider OLE DB Native Client memorizza nella cache tutti i tipi di dati xml come OGGETTI BLOB (Binary Large Objects) in modo che sia possibile accedervi SQL Server in qualsiasi ordine.

Contenuto della sezione

Vedere anche

SQL Server Native Client (OLE DB)
Uso di tipi valore di grandi dimensioni