Mapeamento do tipo de dados em ITableDefinition
Ao criar tabelas usando a função ITableDefinition::CreateTable, o consumidor do provedor de dados OLE DB do SQL Server Native Client pode especificar tipos de dados do SQL Server no membro pwszTypeName da matriz DBCOLUMNDESC passada. Caso o consumidor especifique o tipo de dados de uma coluna por nome, o mapeamento do tipo de dados OLE DB, representado pelo membro wType da estrutura DBCOLUMNDESC, é ignorado.
Ao especificar novos tipos de dados de coluna com tipos de dados OLE DB usando o membro wType da a estrutura DBCOLUMNDESC, o provedor OLE DB do SQL Server Native Client mapeia os tipos de dados OLE DB da seguinte forma.
Tipo de dados OLE DB |
SQL Server tipo de dados |
Informações adicionais |
---|---|---|
DBTYPE_BOOL |
bit |
|
DBTYPE_BYTES |
binary, varbinary, image ou varbinary(max) |
O provedor OLE DB do SQL Server Native Client inspeciona o membro ulColumnSize da estrutura DBCOLUMNDESC. Com base no valor e na versão da instância do SQL Server, o provedor OLE DB do SQL Server Native Client mapeia o tipo para image. Caso o valor de ulColumnSize seja menor que o comprimento máximo de uma coluna de tipo de dados binary, o provedor OLE DB do SQL Server Native Client inspeciona o membro rgPropertySets de DBCOLUMNDESC. Caso DBPROP_COL_FIXEDLENGTH seja VARIANT_TRUE, o provedor OLE DB do SQL Server Native Client mapeia o tipo para binary. Caso o valor da propriedade seja VARIANT_FALSE, o provedor OLE DB do SQL Server Native Client mapeia o tipo para varbinary. Em ambos os casos, o membro ulColumnSize de DBCOLUMNDESC determina a largura da coluna do SQL Server criada. |
DBTYPE_CY |
money |
|
DBTYPE_DBTIMESTAMP |
datetime |
|
DBTYPE_GUID |
uniqueidentifier |
|
DBTYPE_I2 |
smallint |
|
DBTYPE_I4 |
int |
|
DBTYPE_NUMERIC |
numeric |
O provedor OLE DB do SQL Server Native Client inspeciona os membros bPrecision e bScale de DBCOLUMDESC para determinar a precisão e a escala da coluna numeric. |
DBTYPE_R4 |
real |
|
DBTYPE_R8 |
float |
|
DBTYPE_STR |
char, varchar, text ou varchar(max) |
O provedor OLE DB do SQL Server Native Client inspeciona o membro ulColumnSize da estrutura DBCOLUMNDESC. Com base no valor e na versão da instância do SQL Server, o provedor OLE DB do SQL Server Native Client mapeia o tipo para text. Caso o valor de ulColumnSize seja menor que o comprimento máximo de uma coluna de tipo de dados de caracteres multibyte, o provedor OLE DB do SQL Server Native Client inspeciona o membro rgPropertySets de DBCOLUMNDESC. Caso DBPROP_COL_FIXEDLENGTH seja VARIANT_TRUE, o provedor OLE DB do SQL Server Native Client mapeia o tipo para char. Caso o valor da propriedade seja VARIANT_FALSE, o provedor OLE DB do SQL Server Native Client mapeia o tipo para varchar. Em ambos os casos, o membro ulColumnSize de DBCOLUMNDESC determina a largura da coluna SQL Server criada. |
DBTYPE_UDT |
UDT |
As seguintes informações são usadas em estruturas DBCOLUMNDESC por ITableDefinition::CreateTable quando as colunas UDT são obrigatórias:
|
DBTYPE_UI1 |
tinyint |
|
DBTYPE_WSTR |
nchar, nvarchar, ntext ou nvarchar(max) |
O provedor OLE DB do SQL Server Native Client inspeciona o membro ulColumnSize da estrutura DBCOLUMNDESC. Com base no valor, o provedor de dados OLE DB do SQL Server Native Client mapeia o tipo para ntext. Caso o valor de ulColumnSize seja menor que o comprimento máximo de uma coluna de tipo de dados de caractere Unicode, o provedor OLE DB do SQL Server Native Client inspeciona o membro rgPropertySets de DBCOLUMNDESC. Caso DBPROP_COL_FIXEDLENGTH seja VARIANT_TRUE, o provedor OLE DB do SQL Server Native Client mapeia o tipo para nchar. Caso o valor da propriedade seja VARIANT_FALSE, o provedor OLE DB do SQL Server Native Client mapeia o tipo para nvarchar. Em ambos os casos, o membro ulColumnSize de DBCOLUMNDESC determina a largura da coluna SQL Server criada. |
DBTYPE_XML |
XML |
Observação |
---|
Ao criar uma nova tabela, o provedor OLE DB do SQL Server Native Client mapeia apenas os valores de enumeração do tipo de dados OLE DB especificados na tabela anterior. Tentar criar uma tabela com uma coluna de qualquer outro tipo de dados OLE DB gera um erro. |