Сопоставление типов данных в интерфейсе ITableDefinition
При создании таблиц с помощью функции ITableDefinition::CreateTable получатель поставщика OLE DB для собственного клиента SQL Server может указывать типы данных SQL Server в передаваемом элементе pwszTypeName массива DBCOLUMNDESC. Если получатель указывает тип данных столбца по имени, то сопоставление типов OLE DB, представляемое элементом wType структуры DBCOLUMNDESC, не учитывается.
При использовании члена wType структуры DBCOLUMNDESC для указания новых типов данных столбца с использованием типов данных OLE DB поставщик OLE DB для собственного клиента SQL Server сопоставляет типы данных OLE DB следующим образом.
Тип данных OLE DB |
SQL Server тип данных |
Дополнительные сведения |
---|---|---|
DBTYPE_BOOL |
bit |
|
DBTYPE_BYTES |
binary, varbinary, image или varbinary(max) |
В поставщике OLE DB собственного клиента SQL Server выполняется проверка элемента ulColumnSize структуры DBCOLUMNDESC. В зависимости от значения и от версии экземпляра SQL Server поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом image. Если значение ulColumnSize меньше максимальной длины столбца типа binary, то поставщик OLE DB для собственного клиента SQL Server проверяет элемент rgPropertySets структуры DBCOLUMNDESC. Если значение DBPROP_COL_FIXEDLENGTH равно VARIANT_FALSE, поставщик OLE DB для собственного клиента SQL Server сопоставляет этот тип с типом binary. Если значение свойства — VARIANT_FALSE, то поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом varbinary. В любом случае элемент ulColumnSize структуры DBCOLUMNDESC определяет ширину создаваемого столбца SQL Server. |
DBTYPE_CY |
money |
|
DBTYPE_DBTIMESTAMP |
datetime |
|
DBTYPE_GUID |
uniqueidentifier |
|
DBTYPE_I2 |
smallint |
|
DBTYPE_I4 |
int |
|
DBTYPE_NUMERIC |
numeric |
Поставщик OLE DB для собственного клиента SQL Server проверяет элементы bPrecision и bScale структуры DBCOLUMDESC, чтобы определить точность и число десятичных знаков столбца numeric. |
DBTYPE_R4 |
real |
|
DBTYPE_R8 |
float |
|
DBTYPE_STR |
char, varchar, text или varchar(max) |
В поставщике OLE DB собственного клиента SQL Server выполняется проверка элемента ulColumnSize структуры DBCOLUMNDESC. В зависимости от значения и версии экземпляра SQL Server поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом text. Если значение ulColumnSize меньше максимальной длины столбца многобайтового символьного типа данных, то поставщик OLE DB для собственного клиента SQL Server проверяет элемент rgPropertySets структуры DBCOLUMNDESC. Если значение DBPROP_COL_FIXEDLENGTH равно VARIANT_FALSE, то поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом char. Если значение свойства равно VARIANT_FALSE, то поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом varchar. В любом случае элемент ulColumnSize структуры DBCOLUMNDESC определяет ширину создаваемого столбца SQL Server. |
DBTYPE_UDT |
Определяемый пользователем тип |
Следующие сведения используются в структурах DBCOLUMNDESC функцией ITableDefinition::CreateTable, когда необходимо использовать столбцы определяемых пользователем типов:
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_WSTR |
nchar, nvarchar, ntext или nvarchar(max) |
В поставщике OLE DB собственного клиента SQL Server выполняется проверка элемента ulColumnSize структуры DBCOLUMNDESC. В зависимости от значения поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом ntext. Если значение ulColumnSize меньше максимальной длины столбца символов Юникода, то поставщик OLE DB для собственного клиента SQL Server проверяет элемент rgPropertySets структуры DBCOLUMNDESC. Если значение DBPROP_COL_FIXEDLENGTH равно VARIANT_FALSE, поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом nchar. Если значение свойства равно VARIANT_FALSE, то поставщик OLE DB для собственного клиента SQL Server сопоставляет тип с типом nvarchar. В любом случае элемент ulColumnSize структуры DBCOLUMNDESC определяет ширину создаваемого столбца SQL Server. |
DBTYPE_XML |
XML |
![]() |
---|
При создании новой таблицы поставщик OLE DB для собственного клиента SQL Server сопоставляет только значения перечислений типов данных OLE DB, указанные в предшествующей таблице. Попытка создать таблицу со столбцом любого другого типа данных OLE DB приводит к ошибке. |