Mapping dei tipi di dati in set di righe e parametri

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

Download del driver OLE DB

Nei set di righe e come valori di parametro, OLE DB Driver per SQL Server rappresenta i dati di SQL Server usando i tipi di dati definiti da OLE DB seguenti, registrati nelle funzioni IColumnsInfo::GetColumnInfoe ICommandWithParameters::GetParameterInfo.

Tipo di dati di SQL Server Tipo di dati OLE DB
bigint DBTYPE_I8
binary DBTYPE_BYTES
bit DBTYPE_BOOL
char DBTYPE_STR
datetime DBTYPE_DBTIMESTAMP
datetime2 DBTYPE_DBTIMESTAMP
decimal DBTYPE_NUMERIC
float DBTYPE_R8
Immagine DBTYPE_BYTES
int DBTYPE_I4
money DBTYPE_CY
nchar DBTYPE_WSTR
ntext DBTYPE_WSTR
numeric DBTYPE_NUMERIC
nvarchar DBTYPE_WSTR
real DBTYPE_R4
smalldatetime DBTYPE_DBTIMESTAMP
smallint DBTYPE_I2
smallmoney DBTYPE_CY
sql_variant DBTYPE_VARIANT, DBTYPE_SQLVARIANT
sysname DBTYPE_WSTR
Testo DBTYPE_STR
timestamp DBTYPE_BYTES
tinyint DBTYPE_UI1
UDT DBTYPE_UDT
uniqueidentifier DBTYPE_GUID
varbinary DBTYPE_BYTES
varchar DBTYPE_STR
XML DBTYPE_XML

OLE DB Driver per SQL Server supporta le conversioni di dati richieste dal consumer, come mostrato nell'illustrazione.

Gli oggetti sql_variant possono contenere dati di qualsiasi tipo di dati di SQL Server, ad eccezione di text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp e dei tipi CLR definiti dall'utente di Microsoft .NET Framework. Per un'istanza di dati sql_variant, inoltre, il tipo di dati di base sottostante non può corrispondere a sql_variant. La colonna può ad esempio contenere valori smallint per alcune righe, valori float per altre righe e valori char/nchar per la parte restante delle righe.

Nota

Il tipo di dati sql_variant è simile al tipo di dati Variant in Visual Basic e al DBTYPE_VARIANT, DBTYPE_SQLVARIANT in OLEDB.

Quando i dati sql_variant vengono recuperati come DBTYPE_VARIANT, vengono inseriti in una struttura VARIANT nel buffer. Tuttavia i sottotipi presenti nella struttura VARIANT non possono eseguire il mapping a sottotipi definiti nel tipo di dati sql_variant. Perché tutti i sottotipi siano corrispondenti, è necessario che i dati sql_variant vengano quindi recuperati come DBTYPE_SQLVARIANT.

Tipo di dati DBTYPE_SQLVARIANT

Per supportare il tipo di dati sql_variant, il driver OLE DB per SQL Server espone un tipo di dati specifico del provider denominato DBTYPE_SQLVARIANT. Quando i dati sql_variant vengono recuperati come DBTYPE_SQLVARIANT, vengono archiviati in una struttura SSVARIANT specifica del provider. La struttura SSVARIANT contiene tutti i sottotipi che corrispondono ai sottotipi del tipo di dati sql_variant.

La proprietà di sessione SSPROP_ALLOWNATIVEVARIANT deve essere inoltre impostata su TRUE.

Proprietà SSPROP_ALLOWNATIVEVARIANT specifica del provider

Durante il recupero dei dati è possibile specificare in modo esplicito il tipo di dati da restituire per una colonna o un parametro. È anche possibile servirsi di IColumnsInfo per ottenere le informazioni sulle colonne da usare per definire l'associazione. Quando IColumnsInfo viene usato a tale scopo, se la proprietà di sessione SSPROP_ALLOWNATIVEVARIANT è FALSE (valore predefinito), viene restituito DBTYPE_VARIANT per le colonne sql_variant. Se la proprietà SSPROP_ALLOWNATIVEVARIANT è FALSE, DBTYPE_SQLVARIANT non è supportato. Se la proprietà SSPROP_ALLOWNATIVEVARIANT è impostata su TRUE, il tipo di colonna viene restituito come DBTYPE_SQLVARIANT, nel qual caso il buffer conterrà la struttura SSVARIANT. Durante il recupero dei dati sql_variant come DBTYPE_SQLVARIANT la proprietà di sessione SSPROP_ALLOWNATIVEVARIANT deve essere impostata su TRUE.

La proprietà SSPROP_ALLOWNATIVEVARIANT fa parte del set di proprietà DBPROPSET_SQLSERVERSESSION specifico del provider ed è una proprietà di sessione.

La proprietà DBTYPE_VARIANT si applica a tutti gli altri provider OLE DB.

SSPROP_ALLOWNATIVEVARIANT

La proprietà SSPROP_ALLOWNATIVEVARIANT è una proprietà di sessione e fa parte del set di proprietà DBPROPSET_SQLSERVERSESSION.

Proprietà Descrizione
SSPROP_ALLOWNATIVEVARIANT Tipo: VT_BOOL

L/S: Lettura/Scrittura

Impostazione predefinita: VARIANT_FALSE

Descrizione: determina se i dati recuperati appartengono alla categoria DBTYPE_VARIANT o DBTYPE_SQLVARIANT.

VARIANT_TRUE: il tipo di colonna viene restituito come DBTYPE_SQLVARIANT e in tal caso il buffer conserva la struttura SSVARIANT.

VARIANT_FALSE: il tipo di colonna viene restituito come DBTYPE_VARIANT e il buffer presenta la struttura VARIANT.

Vedi anche

Tipi di dati (OLE DB)