Supporto delle colonne di tipo sparse in SQL Server Native Client (OLE DB)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
Importante
SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e da SQL Server Management Studio 19 (SSMS). Il provider OLE DB di SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB legacy Microsoft per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni. In futuro, passare al nuovo driver Microsoft OLE DB (MSOLEDBSQL) per SQL Server.
In questo argomento vengono fornite informazioni sul supporto OLE DB di SQL Server Native Client per le colonne di tipo sparse. Per altre informazioni sulle colonne di tipo sparse, vedere Supporto colonne di tipo sparse in SQL Server Native Client. 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 di 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 SQL Server Native Client 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 seleziona * dalla tabella, vengono restituite tutte le colonne che non sono membri del column_set di tipo sparse, oltre a una colonna XML contenente i valori di tutte le colonne non Null che sono membri 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. |