Сопоставление типов данных собственного клиента SQL Server в наборах строк и параметрах
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
В наборах строк и в качестве значений параметров поставщик OLE DB собственного клиента SQL Server представляет данные SQL Server с помощью следующих определенных типов данных OLE DB, сообщаемых в функциях IColumnsInfo::GetColumnInfo и ICommandWithParameters::GetParameterInfo.
Тип данных SQL Server | Тип данных OLE DB |
---|---|
bigint | DBTYPE_I8 |
binary | DBTYPE_BYTES |
bit | DBTYPE_BOOL |
char | DBTYPE_STR |
datetime | DBTYPE_DBTIMESTAMP |
datetime2 | DBTYPE_DBTIME2 |
десятичное | DBTYPE_NUMERIC |
float | DBTYPE_R8 |
Изображение | 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 |
Поставщик OLE DB собственного клиента SQL Server поддерживает преобразования данных, запрашиваемые потребителем, как показано на рисунке.
Объекты sql_variant могут хранить данные любого типа данных SQL Server, кроме текста, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp и Microsoft платформа .NET Framework пользовательских типов среды CLR. Экземпляр данных sql_variant не может также иметь sql_variant в качестве базового типа данных. Например, столбец может содержать значения smallint в некоторых строках, значения float в других строках и значения char/nchar в остальных.
Примечание.
Тип данных sql_variant аналогичен типу данных Variant в Visual Basic и DBTYPE_VARIANT DBTYPE_SQLVARIANT в OLEDB.
Если данные sql_variant получены как DBTYPE_VARIANT, они размещаются в структуре VARIANT в буфере. Однако подтипы в структуре VARIANT могут не соответствовать подтипам, определенным в типе данных sql_variant. Затем данные sql_variant должны быть выбраны как DBTYPE_SQLVARIANT для сопоставления всех подтипов.
Тип данных DBTYPE_SQLVARIANT
Для поддержки типа данных sql_variant поставщик OLE DB собственного клиента SQL Server предоставляет тип данных, определенный поставщиком, который называется DBTYPE_SQLVARIANT. Если данные sql_variant получены как DBTYPE_SQLVARIANT, они размещаются в специфической для поставщика структуре SSVARIANT. Структура SSVARIANT содержит все подтипы, сопоставленные с подтипами типа данных sql_variant.
Свойство сеанса SSPROP_ALLOWNATIVEVARIANT должно быть равно true.
Специфическое для поставщика свойство SSPROP_ALLOWNATIVEVARIANT
При выборке данных можно явно указать разновидность типа данных, которые должны быть возвращены для столбца или для параметра. Интерфейс IColumnsInfo может также использоваться с целью получения сведений о столбце и их применения для привязки. Если интерфейс IColumnsInfo используется для получения сведений о столбце с целью привязки, а свойство сеанса SSPROP_ALLOWNATIVEVARIANT имеет значение FALSE (по умолчанию), для столбцов sql_variant возвращается DBTYPE_VARIANT. Если свойство SSPROP_ALLOWNATIVEVARIANT имеет значение FALSE, DBTYPE_SQLVARIANT не поддерживается. Если свойство SSPROP_ALLOWNATIVEVARIANT имеет значение TRUE, возвращается тип столбца DBTYPE_SQLVARIANT. В этом случае в буфере сохраняется структура SSVARIANT. При выборке данных sql_variant как данных типа DBTYPE_SQLVARIANT свойство сеанса SSPROP_ALLOWNATIVEVARIANT должно быть равно TRUE.
Свойство SSPROP_ALLOWNATIVEVARIANT является частью специфического для поставщика набора свойств DBPROPSET_SQLSERVERSESSION и свойством сеанса.
DBTYPE_VARIANT применяется ко всем другим поставщикам OLE DB.
Свойство SSPROP_ALLOWNATIVEVARIANT
Свойство SSPROP_ALLOWNATIVEVARIANT является свойством сеанса и частью набора свойств DBPROPSET_SQLSERVERSESSION.
Идентификатор свойства | Description |
---|---|
Свойство SSPROP_ALLOWNATIVEVARIANT | Тип: VT_BOOL R/W: чтение и запись По умолчанию: VARIANT_FALSE Описание: определяет, имеют ли данные, полученные в результате выборки, тип DBTYPE_VARIANT или DBTYPE_SQLVARIANT. VARIANT_TRUE: возвращается тип столбца DBTYPE_SQLVARIANT. В этом случае в буфере сохраняется структура SSVARIANT. VARIANT_FALSE: возвращается столбец типа DBTYPE_VARIANT, и в буфере сохраняется структура VARIANT. |