Supporto per colonne di tipo sparse nel driver OLE DB per SQL Server

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Download del driver OLE DB

OLE DB Driver per SQL Server supporta le colonne di tipo sparse. Per altre informazioni sulle colonne di tipo sparse in SQL Server, vedere Usare le colonne di tipo sparse e Usare set di colonne.

Per altre informazioni sul supporto per le colonne di tipo sparse in OLE DB Driver per SQL Server, vedere Supporto per colonne di tipo sparse (OLE DB).

Scenari utente per colonne di tipo sparse e OLE DB Driver per SQL Server

Nella tabella seguente vengono descritti in breve gli scenari comuni per gli utenti di OLE DB Driver per SQL Server che usano colonne di tipo sparse:

Scenario Comportamento
select * from table o IOpenRowset::OpenRowset. Restituisce tutte le colonne che non sono membri del set di colonne column_set di tipo sparse, nonché una colonna XML che contiene i valori di tutte le colonne non Null che sono membri del set di colonne column_set di tipo sparse.
Fare riferimento a una colonna in base al nome. È possibile fare riferimento alla colonna indipendentemente dal relativo stato di colonna di tipo sparse o dall'appartenenza al set di colonne column_set.
Accedere alle colonne che sono membri del set di colonne column_set tramite una colonna XML calcolata. È possibile accedere alle colonne che sono membri del set di colonne column_set di tipo sparse selezionando il set di colonne column_set in base al nome; inoltre, i valori di tali colonne possono essere inseriti e aggiornati aggiornando i dati XML nella colonna column_set.

Il valore deve essere conforme allo schema per le colonne column_set.
Recuperare metadati per tutte le colonne in una tabella usando il set di righe dello schema DBSCHEMA_COLUMNS senza alcuna restrizione relativa alle colonne (OLE DB). Restituisce una riga per tutte le colonne che non sono membri di un set di colonne column_set. Se la tabella include un set di colonne column_set di tipo sparse, verrà restituita una riga per la tabella.

Si noti che questo comportamento non restituisce metadati per colonne membri di un set di colonne column_set.
Recuperare metadati per tutte le colonne, indipendentemente dal fatto che siano o meno di tipo sparse o dall'appartenenza a un set di colonne column_set. È possibile che venga restituito un numero molto elevato di righe. Chiamare IDBSchemaRowset::GetRowset per ottenere il set di righe dello schema DBSCHEMA_COLUMNS_EXTENDED.
Recuperare metadati solo per le colonne che sono membri di un set di colonne column_set. È possibile che venga restituito un numero molto elevato di righe. Chiamare IDBSchemaRowset::GetRowset per ottenere il set di righe dello schema DBSCHEMA_SPARSE_COLUMN_SET.
Determinare se una colonna è di tipo sparse. Esaminare la colonna SS_IS_SPARSE del set di righe dello schema DBSCHEMA_COLUMNS (OLE DB).
Determinare se una colonna è un column_set. Esaminare la colonna SS_IS_COLUMN_SET del set di righe dello schema DBSCHEMA_COLUMNS. In alternativa, esaminare i valori dwFlags restituiti da IColumnsinfo::GetColumnInfo o DBCOLUMNFLAGS nel set di righe restituito da IColumnsRowset::GetColumnsRowset. Per le colonne column_set sarà impostato DBCOLUMNFLAGS_SS_ISCOLUMNSET.
Importazione ed esportazione di colonne di tipo sparse tramite BCP per una tabella senza column_set. Nessuna modifica nel comportamento rispetto alle versioni precedenti di OLE DB Driver per SQL Server.
Importazione ed esportazione di colonne di tipo sparse tramite BCP per una tabella con column_set. Il valore column_set viene importato ed esportato in modo analogo a XML, ovvero come varbinary(max), se associato come tipo binario, o come nvarchar(max) se associato come tipo char o wchar.

Le colonne che sono membri del set di colonne column_set di tipo sparse non vengono esportate come colonne distinte, ma vengono esportate solo nel valore di column_set.
Comportamento di queryout per BCP. Nessuna modifica nella gestione di colonne denominate in modo esplicito rispetto alle versioni precedenti di OLE DB Driver per SQL Server.

Gli scenari che comportano l'importazione e l'esportazione tra tabelle con schemi diversi possono richiedere una gestione speciale.

Per ulteriori informazioni su BCP, vedere Supporto per la copia bulk (BCP) per colonne di tipo sparse più avanti in questo argomento.

Comportamento dei client legacy

I client restituiscono metadati solo per le colonne che non sono membri del set di colonne column_set di tipo sparse per SQLColumns e DBSCHMA_COLUMNS.

I client legacy possono accedere per nome alle colonne che sono membri del set di colonne column_set di tipo sparse e la colonna column_set sarà accessibile come colonna XML per i client e come colonna per i client SQL Server 2005 (9.x).

Supporto per la copia bulk (BCP) per colonne di tipo sparse

Non è stata apportata alcuna modifica all'API BCP in OLE DB per le colonne di tipo sparse e per le caratteristiche column_set.

Se una tabella include un set di colonne column_set, le colonne di tipo sparse non verranno gestite come colonne distinte. I valori di tutte le colonne di tipo sparse sono inclusi nel valore di column_set, che viene esportato come una colonna XML, ovvero come varbinary(max), se associato come tipo binario, oppure come nvarchar(max) se associato come tipo char o wchar. Per l'importazione, il valore column_set deve essere conforme allo schema di column_set.

Per le operazioni queryout non esiste alcuna modifica al modo in cui sono gestite le colonne a cui si fa esplicitamente riferimento. Le colonne queryout dispongono dello stesso comportamento delle colonne XML e il fatto che siano o meno di tipo sparse non ha effetto sulla gestione delle colonne di tipo sparse denominate.

Se, tuttavia, si utilizza queryout per l'esportazione e si fa riferimento a colonne di tipo sparse che sono membri del set di colonne di tipo sparse in base al nome, non è possibile eseguire un'importazione diretta in una tabella dalla struttura analoga. Ciò è dovuto al fatto che BCP usa metadati coerenti per un'operazione select * per l'importazione e non è in grado di creare corrispondenze tra le colonne membri del set di colonne column_set e i metadati. Per importare colonne membri del set di colonne column_set singolarmente, è necessario definire una vista nella tabella che fa riferimento alle colonne column_set desiderate ed eseguire l'operazione di importazione utilizzando la vista.

Vedi anche

Driver OLE DB per SQL Server