Datatypsmappning i raduppsättningar och parametrar

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Microsoft Fabric

Ladda ned OLE DB-drivrutins

I raduppsättningar och som parametervärden representerar OLE DB-drivrutinen för SQL Server SQL Server-data genom att använda följande OLE DB-definierade datatyper, rapporterade i funktionerna IColumnsInfo::GetColumnInfo och ICommandWithParameters::GetParameterInfo.

SQL Server-datatyp OLE DB-datatyp
bigint DBTYPE_I8
binary DBTYPE_BYTES
bit DBTYPE_BOOL
tecken DBTYPE_STR
datetime DBTYPE_DBTIMESTAMP
datetime2 DBTYPE_DBTIMESTAMP
decimal DBTYPE_NUMERIC
float DBTYPE_R8
image DBTYPE_BYTES
int DBTYPE_I4
pengar DBTYPE_CY
nchar DBTYPE_WSTR
ntext DBTYPE_WSTR
numerisk DBTYPE_NUMERIC
nvarchar DBTYPE_WSTR
riktiga DBTYPE_R4
smalldatetime DBTYPE_DBTIMESTAMP
smallint DBTYPE_I2
småpengar DBTYPE_CY
sql_variant DBTYPE_VARIANT, DBTYPE_SQLVARIANT
sysname DBTYPE_WSTR
text DBTYPE_STR
Tidsstämpel DBTYPE_BYTES
tinyint DBTYPE_UI1
UDT DBTYPE_UDT
uniqueidentifier DBTYPE_GUID
varbinary DBTYPE_BYTES
varchar DBTYPE_STR
XML DBTYPE_XML

OLE DB-drivrutinen för SQL Server stödjer konsumentbegärda datakonverteringar som visas i illustrationen.

De sql_variant objekten kan innehålla data av vilken SQL Server-typ som helst utom text, ntext, bild, varchar(max), nvarchar(max), varbinary(max), xml, tidsstämpel och Microsoft .NET Frameworks common language runtime (CLR) användardefinierade typer. En instans av sql_variant data kan inte heller ha sql_variant som sin underliggande basdatatyp. Till exempel kan kolumnen innehålla smallint-värden för vissa rader, flyttalvärden för andra rader ochchar-nchar-värden/ i resten.

Anmärkning

Datatypen sql_variant liknar Variant-datatypen i Visual Basic och DBTYPE_VARIANT, DBTYPE_SQLVARIANT i OLEDB.

När sql_variant data hämtas som DBTYPE_VARIANT placeras den i en VARIANT-struktur i bufferten. Men subtyperna i VARIANT-strukturen kanske inte mappas till subtyper definierade i sql_variant datatypen. De sql_variant datan måste sedan hämtas som DBTYPE_SQLVARIANT för att alla undertyper ska matcha.

DBTYPE_SQLVARIANT Datatyp

För att stödja den sql_variant datatypen exponerar OLE DB-drivrutinen för SQL Server en leverantörsspecifik datatyp kallad DBTYPE_SQLVARIANT. När sql_variant data hämtas som DBTYPE_SQLVARIANT lagras den i en leverantörsspecifik SSVARIANT-struktur. SSVARIANT-strukturen innehåller alla deltyper som matchar undertyperna av den sql_variant datatypen.

Sessionsegenskapen SSPROP_ALLOWNATIVEVARIANT måste också sättas till SANT.

Provider-Specific Egendom SSPROP_ALLOWNATIVEVARIANT

Vid datahämtning kan du explicit ange vilken typ av datatyp som ska returneras för en kolumn eller för en parameter. IColumnsInfo kan också användas för att hämta kolumninformationen och använda den för att binda. När IColumnsInfo används för att erhålla kolumninformation för bindningsändamål, om SSPROP_ALLOWNATIVEVARIANT sessionsegenskapen är FALSE (standardvärde), returneras DBTYPE_VARIANT för sql_variant kolumner. Om SSPROP_ALLOWNATIVEVARIANT egenskap är FALSK DBTYPE_SQLVARIANT stöds den inte. Om SSPROP_ALLOWNATIVEVARIANT egenskap sätts till SANT returneras kolumntypen som DBTYPE_SQLVARIANT, i vilket fall bufferten håller SSVARIANT-strukturen. Vid att hämta sql_variant data som DBTYPE_SQLVARIANT måste sessionsegenskapen SSPROP_ALLOWNATIVEVARIANT sättas till SANT.

SSPROP_ALLOWNATIVEVARIANT egenskap är en del av den leverantörsspecifika DBPROPSET_SQLSERVERSESSION egenskapsuppsättningen och är en sessionsegenskap.

DBTYPE_VARIANT gäller alla andra leverantörer av OLE-databaser.

SSPROP_ALLOWNATIVEVARIANT

SSPROP_ALLOWNATIVEVARIANT är en sessionegenskap och ingår i DBPROPSET_SQLSERVERSESSION egenskapsuppsättning.

Fastighet Description
SSPROP_ALLOWNATIVEVARIANT Typ: VT_BOOL

R/W: Läs/Skriv

Standard: VARIANT_FALSE

Beskrivning: Avgör om den inhämtade datan är lika DBTYPE_VARIANT eller DBTYPE_SQLVARIANT.

VARIANT_TRUE: Kolumntypen returneras som DBTYPE_SQLVARIANT i vilket fall bufferten kommer att hålla SSVARIANT-strukturen.

VARIANT_FALSE: Kolumntypen returneras som DBTYPE_VARIANT och bufferten kommer att ha VARIANT-struktur.

Se även

Datatyper (OLE DB)