Datentypzuordnung zu Rowsets und Parametern

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

OLE DB-Treiber herunterladen

In Rowsets und als Parameterwerte stellt der OLE DB-Treiber für SQL Server SQL Server-Daten dar, indem die folgenden definierten OLE DB-Datentypen verwendet werden, die in den Funktionen IColumnsInfo::GetColumnInfo und ICommandWithParameters::GetParameterInfo gemeldet werden.

SQL Server-Datentyp OLE DB-Datentyp
bigint DBTYPE_I8
binary DBTYPE_BYTES
bit DBTYPE_BOOL
char DBTYPE_STR
datetime DBTYPE_DBTIMESTAMP
datetime2 DBTYPE_DBTIMESTAMP
decimal DBTYPE_NUMERIC
float DBTYPE_R8
image 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
text DBTYPE_STR
timestamp DBTYPE_BYTES
tinyint DBTYPE_UI1
UDT DBTYPE_UDT
uniqueidentifier DBTYPE_GUID
varbinary DBTYPE_BYTES
varchar DBTYPE_STR
XML DBTYPE_XML

Der OLE DB-Treiber für SQL Server unterstützt, wie in der Abbildung gezeigt, vom Consumer angeforderte Datenkonvertierungen.

Die sql_variant-Objekte können Daten jedes SQL Server-Datentyps enthalten, mit Ausnahme von „text“, „ntext“, „image“, „varchar(max)“, „nvarchar(max)“, „varbinary(max)“, „xml“, „timestamp“ sowie benutzerdefinierten CLR-Typen (Common Language Runtime) von Microsoft .NET Framework. Eine Instanz der sql_variant-Daten darf außerdem nicht sql_variant als zugrunde liegenden Basisdatentyp aufweisen. Die Spalte kann beispielsweise in einigen Zeilen smallint-Werte enthalten, in anderen Zeilen float-Werte und in den übrigen char/nchar-Werte.

Hinweis

Der sql_variant Datentyp ähnelt dem Datentyp Variant in Visual Basic und dem DBTYPE_VARIANT, DBTYPE_SQLVARIANT in OLEDB.

Wenn sql_variant-Daten als DBTYPE_VARIANT abgerufen werden, werden sie in einer VARIANT-Struktur im Puffer abgelegt. Die Untertypen in der VARIANT-Struktur dürfen jedoch nicht den im sql_variant-Datentyp definierten Untertypen zugeordnet werden. Die sql_variant-Daten müssen dann als DBTYPE_SQLVARIANT abgerufen werden, damit alle Untertypen zugeordnet werden.

DBTYPE_SQLVARIANT-Datentyp

Zur Unterstützung des sql_variant-Datentyps stellt der OLE DB-Treiber für SQL Server einen anbieterspezifischen Datentyp mit dem Namen DBTYPE_SQLVARIANT zur Verfügung. Wenn sql_variant-Daten als DBTYPE_SQLVARIANT abgerufen werden, werden sie in einer anbieterspezifischen SSVARIANT-Struktur gespeichert. Die SSVARIANT-Struktur enthält alle Untertypen, die zu den Untertypen des sql_variant-Datentyps passen.

Die Sitzungseigenschaft SSPROP_ALLOWNATIVEVARIANT muss außerdem auf TRUE festgelegt werden.

Anbieterspezifische Eigenschaft SSPROP_ALLOWNATIVEVARIANT

Beim Abrufen von Daten können Sie explizit angeben, welcher Datentyp für eine Spalte oder einen Parameter zurückgegeben werden soll. IColumnsInfo kann auch verwendet werden, um die Spalteninformationen abzurufen und diese Informationen für die Bindung zu verwenden. Wenn mit IColumnsInfo Spalteninformationen für Bindungszwecke abgerufen werden und die SSPROP_ALLOWNATIVEVARIANT-Sitzungseigenschaft FALSE (Standardwert) lautet, wird für die sql_variant-Spalten DBTYPE_VARIANT zurückgegeben. Wenn die SSPROP_ALLOWNATIVEVARIANT-Eigenschaft FALSE ist, wird DBTYPE_SQLVARIANT nicht unterstützt. Wenn die SSPROP_ALLOWNATIVEVARIANT-Eigenschaft auf TRUE festgelegt ist, wird der Spaltentyp als DBTYPE_SQLVARIANT zurückgegeben. In diesem Fall enthält der Puffer die SSVARIANT-Struktur. Beim Abrufen von sql_variant-Daten als DBTYPE_SQLVARIANT muss die SSPROP_ALLOWNATIVEVARIANT-Sitzungseigenschaft auf TRUE festgelegt sein.

Die SSPROP_ALLOWNATIVEVARIANT-Eigenschaft ist ein Teil des anbieterspezifischen DBPROPSET_SQLSERVERSESSION-Eigenschaftssatzes und eine Sitzungseigenschaft.

DBTYPE_VARIANT gilt für alle anderen OLE DB-Anbieter.

SSPROP_ALLOWNATIVEVARIANT

SSPROP_ALLOWNATIVEVARIANT ist eine Sitzungseigenschaft und ein Teil des DBPROPSET_SQLSERVERSESSION-Eigenschaftssatzes.

Eigenschaft BESCHREIBUNG
SSPROP_ALLOWNATIVEVARIANT Typ: VT_BOOL

R/W: Lesen/Schreiben

Standardwert: VARIANT_FALSE

Beschreibung: Bestimmt, ob die Daten als DBTYPE_VARIANT oder DBTYPE_SQLVARIANT abgerufen werden.

VARIANT_TRUE: Der Spaltentyp wird als DBTYPE_SQLVARIANT zurückgegeben. In diesem Fall enthält der Puffer die SSVARIANT-Struktur.

VARIANT_FALSE: Der Spaltentyp wird als DBTYPE_VARIANT zurückgegeben, und der Puffer enthält die VARIANT-Struktur.

Weitere Informationen

Datentypen (OLE DB)