Freigeben über


Datentypzuordnung zu Rowsets und Parametern

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

SQL Server-Datentyp

OLE DB-Datentyp

bigint

DBTYPE_I8

binary

DBTYPE_BYTES

bit

DBTYPE_BOOL

char

DBTYPE_STR

datetime

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 SQL Server Native Client OLE DB-Anbieter unterstützt vom Consumer angeforderte Datenkonvertierungen, wie in der Abbildung gezeigt.

Die sql_variant-Ojekte 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 smallint-Werte in einigen Zeilen, float-Werte in anderen Zeilen und char/nchar-Werte in den übrigen Zeilen enthalten.

HinweisHinweis

Der sql_variant-Datentyp ist in Microsoft-Visual-Basic® dem Variant-Datentyp und den Typen DBTYPE_VARIANT, DBTYPE_SQLVARIANT in OLEDB ähnlich.

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 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 SQL Server Native Client OLE DB-Anbieter 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 ebenfalls verwendet werden, um die Spalteninformationen abzurufen, und diese Informationen für die Bindung 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.

SSPROP_ALLOWNATIVEVARIANT

Typ: VT_BOOL

R/W: Lesen/Schreiben

Standard: 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.

Siehe auch

Konzepte