Supporto per colonne di tipo sparse (OLE DB)

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Scaricare il driver OLE DB

In questo argomento vengono fornite informazioni sul supporto OLE DB Driver per SQL Server per le colonne di tipo sparse. Per altre informazioni sulle colonne di tipo sparse, vedere Supporto per colonne di tipo sparse in OLE DB Driver per SQL Server. Per un esempio, vedere Visualizzare i metadati della colonna e del catalogo per le colonne di tipo sparse (OLE DB).

Metadati di istruzione OLE DB

A partire da SQL Server 2008 (10.0.x), è disponibile un nuovo valore del flag DBCOLUMNFLAGS, DBCOLUMNFLAGS_SS_ISCOLUMNSET. Questo valore deve essere impostato per colonne che sono valori column_set. Il flag DBCOLUMNFLAGS può essere recuperato tramite il parametro dwFlags di IColumnsInfo:: GetColumnsInfo e la colonna DBCOLUMN_FLAGS del set di righe restituito da IColumnsRowset::GetColumnsRowset.

Metadati del catalogo OLE DB

Due colonne aggiuntive specifiche di SQL Server sono state aggiunte a DBSCHEMA_COLUMNS.

Nome colonna Tipo di dati Valore/commenti
SS_IS_SPARSE DBTYPE_BOOL Se la colonna è una colonna di tipo sparse, il valore di questa colonna è VARIANT_TRUE; in caso contrario, è VARIANT_FALSE.
SS_IS_COLUMN_SET DBTYPE_BOOL Se la colonna è la colonna column_set di tipo sparse, il relativo valore è VARIANT_TRUE; in caso contrario, è VARIANT_FALSE.

Sono inoltre stati aggiunti altri due set di righe dello schema. Tali set di righe hanno la stessa struttura di DBSCHEMA_COLUMNS ma restituiscono contenuto diverso. DBSCHEMA_COLUMNS_EXTENDED restituisce tutte le colonne indipendentemente dall'appartenenza a column_set. DBSCHEMA_SPARSE_COLUMN_SET restituisce solo le colonne che sono colonne column_set di tipo sparse.

Comportamento OLE DB di DataTypeCompatibility

Il comportamento con DataTypeCompatibility=80 (nella stringa di connessione) è coerente con un client SQL Server 2000 (8.x), come indicato di seguito:

  • I nuovi set di righe dello schema non sono visibili e i set di righe dello schema non includono righe per essi.

  • Le nuove colonne nel set di righe COLUMNS non sono visibili.

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET non è impostato per le colonne column_set.

  • DBCOMPUTEMODE_NOTCOMPUTED è impostato per le colonne column_set.

Supporto OLE DB per colonne di tipo sparse

Le interfacce OLE DB seguenti sono state modificate in OLE DB Driver per SQL Server per supportare le colonne di tipo sparse:

Tipo o funzione membro Descrizione
IColumnsInfo::GetColumnsInfo Un nuovo valore del flag DBCOLUMNFLAGS, ovvero DBCOLUMNFLAGS_SS_ISCOLUMNSET, è impostato per le colonne column_set in dwFlags.

DBCOLUMNFLAGS_WRITE è impostato per le colonne column_set.
IColumsRowset::GetColumnsRowset Un nuovo valore del flag DBCOLUMNFLAGS, ovvero DBCOLUMNFLAGS_SS_ISCOLUMNSET, è impostato per le colonne column_set in DBCOLUMN_FLAGS.

DBCOLUMN_COMPUTEMODE è impostato su DBCOMPUTEMODE_DYNAMIC per le colonne column_set.
IDBSchemaRowset::GetSchemaRowset DBSCHEMA_COLUMNS restituisce due nuove colonne: SS_IS_COLUMN_SET e SS_IS_SPARSE.

DBSCHEMA_COLUMNS restituisce solo colonne che non sono membri di column_set.

Sono stati aggiunti due nuovi set di righe dello schema: DBSCHEMA_COLUMNS_EXTENDED restituirà tutte le colonne indipendentemente dal fatto che siano o meno di tipo sparse o dall'appartenenza a column_set. DBSCHEMA_SPARSE_COLUMN_SET restituisce solo le colonne che sono membri di column_set. Questi nuovi set di righe includono le stesse colonne e comportano le stesse restrizioni di DBSCHEMA_COLUMNS.
IDBSchemaRowset::GetSchemas IDBSchemaRowset::GetSchemas include i GUID per i nuovi set di righe DBSCHEMA_COLUMNS_EXTENDED e DBSCHEMA_SPARSE_COLUMN_SET nell'elenco dei set di righe dello schema disponibili.
ICommand::Execute Se si usa select * fromtable, vengono restituite tutte le colonne che non fanno parte del column_set di tipo sparse, nonché una colonna XML che contiene i valori di tutte le colonne non null che fanno parte del column_set di tipo sparse, se presente.
IOpenRowset::OpenRowset IOpenRowset::OpenRowset restituisce un rowset con le stesse colonne di ICommand::Execute, con una query select * nella stessa tabella.
ITableDefinition Non è stata apportata alcuna modifica a questa interfaccia per le colonne di tipo sparse o per le colonne column_set. Le applicazioni che devono apportare modifiche allo schema devono eseguire direttamente l'istruzione Transact-SQL appropriata.

Vedere anche

Driver OLE DB per programmazione con SQL Server