Datentypzuordnung zu ITableDefinition
Beim Erstellen von Tabellen mit der ITableDefinition::CreateTable -Funktion kann der Consumer des OLE DB-Anbieters von SQL Server Native Client SQL Server-Datentypen im pwszTypeName-Element des DBCOLUMNDESC-Arrays angeben, das der Funktion übergeben wird. Gibt der Consumer den Datentyp einer Spalte namentlich an, wird die OLE DB-Datentypzuordnung ignoriert, die durch das wType-Element der DBCOLUMNDESC-Struktur dargestellt wird.
Wenn die Datentypen neuer Spalten mit OLE DB-Datentypen mithilfe des wType-Elements der DBCOLUMNDESC-Struktur angegeben werden, dann ordnet der OLE DB-Anbieter von SQL Server Native Client die OLE DB-Datentypen wie folgt zu:
OLE DB-Datentyp |
SQL Server Datentyp |
Zusätzliche Informationen |
---|---|---|
DBTYPE_BOOL |
bit |
|
DBTYPE_BYTES |
binary, varbinary, image oder varbinary(max) |
Der OLE DB-Anbieter von SQL Server Native Client überprüft den Wert des ulColumnSize-Elements der DBCOLUMNDESC-Struktur. Abhängig von diesem Wert und der Version der SQL Server-Instanz ordnet der OLE DB-Anbieter von SQL Server den Typ image zu. Wenn der Wert von ulColumnSize kleiner als die maximale Länge einer Spalte des binary-Datentyps ist, dann überprüft der OLE DB-Anbieter von SQL Server das rgPropertySets-Element der DBCOLUMNDESC-Struktur. Wenn DBPROP_COL_FIXEDLENGTH den Wert VARIANT_TRUE hat, ordnet der OLE DB-Anbieter von SQL Server Native Client den Typ binary zu. Hat die Eigenschaft den Wert VARIANT_TRUE, dann ordnet der OLE DB-Anbieter von SQL Server Native Client den Typ varbinary zu. In jedem Fall bestimmt das ulColumnSize-Element der DBCOLUMNDESC-Struktur die Breite der SQL Server-Spalte, die erstellt wird. |
DBTYPE_CY |
money |
|
DBTYPE_DBTIMESTAMP |
datetime |
|
DBTYPE_GUID |
uniqueidentifier |
|
DBTYPE_I2 |
smallint |
|
DBTYPE_I4 |
int |
|
DBTYPE_NUMERIC |
numeric |
Der OLE DB-Anbieter von SQL Server Native Client überprüft das bPrecision-Element und das bScale-Element der DBCOLUMDESC-Struktur, um Genauigkeit und Dezimalstellen der numeric-Spalte zu bestimmen. |
DBTYPE_R4 |
real |
|
DBTYPE_R8 |
float |
|
DBTYPE_STR |
char, varchar, text oder varchar(max) |
Der OLE DB-Anbieter von SQL Server Native Client überprüft den Wert des ulColumnSize-Elements der DBCOLUMNDESC-Struktur. Abhängig von diesem Wert und der Version der SQL Server-Instanz ordnet der OLE DB-Anbieter von SQL Server den Typ text zu. Wenn der Wert von ulColumnSize kleiner als die maximale Länge einer Spalte eines Datentyps für Mehrbyte-Zeichendaten ist, dann überprüft der OLE DB-Anbieter von SQL Server das rgPropertySets-Element der DBCOLUMNDESC-Struktur. Wenn DBPROP_COL_FIXEDLENGTH den Wert VARIANT_TRUE hat, ordnet der OLE DB-Anbieter von SQL Server Native Client den Typ char zu. Hat die Eigenschaft den Wert VARIANT_TRUE, dann ordnet der OLE DB-Anbieter von SQL Server Native Client den Typ varchar zu. In jedem Fall bestimmt das ulColumnSize-Element der DBCOLUMNDESC-Struktur die Breite der SQL Server-Spalte, die erstellt wird. |
DBTYPE_UDT |
UDT |
Die folgenden Informationen werden von ITableDefinition::CreateTable in DBCOLUMNDESC-Strukturen verwendet, wenn UDT-Spalten erforderlich sind:
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_WSTR |
nchar, nvarchar, ntext oder nvarchar(max) |
Der OLE DB-Anbieter von SQL Server Native Client überprüft den Wert des ulColumnSize-Elements der DBCOLUMNDESC-Struktur. Abhängig von diesem Wert ordnet der OLE DB-Anbieter von SQL Server den Typ ntext zu. Wenn der Wert von ulColumnSize kleiner als die maximale Länge einer Spalte eines Datentyps für Unicode-Zeichendaten ist, dann überprüft der OLE DB-Anbieter von SQL Server das rgPropertySets-Element der DBCOLUMNDESC-Struktur. Wenn DBPROP_COL_FIXEDLENGTH den Wert VARIANT_TRUE hat, ordnet der OLE DB-Anbieter von SQL Server Native Client den Typ nchar zu. Hat die Eigenschaft den Wert VARIANT_TRUE, dann ordnet der OLE DB-Anbieter von SQL Server Native Client den Typ nvarchar zu. In jedem Fall bestimmt das ulColumnSize-Element der DBCOLUMNDESC-Struktur die Breite der SQL Server-Spalte, die erstellt wird. |
DBTYPE_XML |
XML |
Hinweis |
---|
Beim Erstellen einer neuen Tabelle ordnet der OLE DB-Anbieter von SQL Server nur die in der vorstehenden Tabelle angegebenen Enumerationswerte für OLE DB-Datenwerte zu. Durch den Versuch, eine Tabelle mit einer Spalte eines anderen OLE DB-Datentyps zu erstellen, wird ein Fehler erzeugt. |