Asignación de tipos de datos en ITableDefinition
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Cuando se crean tablas mediante la función ITableDefinition::CreateTable, el consumidor del controlador OLE DB para SQL Server puede especificar tipos de datos SQL Server en el miembro pwszTypeName de la matriz DBCOLUMNDESC que se pasa. Si el consumidor especifica el tipo de datos de una columna por nombre, se omite la asignación del tipo de datos de OLE DB, representada por el miembro wType de la estructura DBCOLUMNDESC.
Cuando se especifican nuevos tipos de datos de columna con tipos de datos de OLE DB mediante el miembro wType de la estructura DBCOLUMNDESC, el controlador OLE DB para SQL Server asigna los tipos de datos de OLE DB tal y como se indica a continuación.
Tipo de datos de OLE DB | SQL Server tipo de datos |
Información adicional |
---|---|---|
DBTYPE_BOOL | bit | |
DBTYPE_BYTES | binary, varbinary, image o varbinary(max) | OLE DB Driver for SQL Server inspecciona el miembro ulColumnSize de la estructura DBCOLUMNDESC. Basándose en el valor y la versión de la instancia de SQL Server, OLE DB Driver for SQL Server asigna el tipo a image. Si el valor de ulColumnSize es menor que la longitud máxima de una columna de tipo de datos binary, el controlador OLE DB para SQL Server inspecciona el miembro rgPropertySets de DBCOLUMNDESC. Si DBPROP_COL_FIXEDLENGTH es VARIANT_TRUE, OLE DB Driver for SQL Server asigna el tipo a binary. Si el valor de la propiedad es VARIANT_FALSE, OLE DB Driver for SQL Server asigna el tipo a varbinary. En cualquier caso, el miembro ulColumnSize de DBCOLUMNDESC determina el ancho de la columna SQL Server creada. |
DBTYPE_CY | money | |
DBTYPE_DBTIMESTAMP | datetime2 | |
DBTYPE_GUID | uniqueidentifier | |
DBTYPE_I2 | smallint | |
DBTYPE_I4 | int | |
DBTYPE_I8 | bigint | |
DBTYPE_NUMERIC | numeric | El controlador OLE DB para SQL Server inspecciona los miembros bPrecision y bScale de DBCOLUMDESC para determinar la precisión y la escala de la columna numeric. |
DBTYPE_R4 | real | |
DBTYPE_R8 | float | |
DBTYPE_STR | char, varchar, text o varchar(max) | OLE DB Driver for SQL Server inspecciona el miembro ulColumnSize de la estructura DBCOLUMNDESC. Basándose en el valor y la versión de la instancia de SQL Server, OLE DB Driver for SQL Server asigna el tipo a text. Si el valor de ulColumnSize es menor que la longitud máxima de una columna de tipo de datos de caracteres multibyte, el controlador OLE DB para SQL Server inspecciona el miembro rgPropertySets de DBCOLUMNDESC. Si DBPROP_COL_FIXEDLENGTH es VARIANT_TRUE, OLE DB Driver for SQL Server asigna el tipo a char. Si el valor de la propiedad es VARIANT_FALSE, OLE DB Driver for SQL Server asigna el tipo a varchar. En cualquier caso, el miembro ulColumnSize de DBCOLUMNDESC determina el ancho de la columna SQL Server creada. |
DBTYPE_UDT | UDT | Cuando se requieren columnas UDT, ITableDefinition::CreateTable usa la información que se muestra a continuación en estructuras DBCOLUMNDESC: Se omite pwSzTypeName. rgPropertySets debe incluir un conjunto de propiedades DBPROPSET_SQLSERVERCOLUMN como se describe en la sección de DBPROPSET_SQLSERVERCOLUMN, en Usar tipos definidos por el usuario. |
DBTYPE_UI1 | tinyint | |
DBTYPE_VARIANT | sql_variant | |
DBTYPE_WSTR | nchar, nvarchar, ntext o nvarchar(max) | OLE DB Driver for SQL Server inspecciona el miembro ulColumnSize de la estructura DBCOLUMNDESC. Basándose en el valor, OLE DB Driver for SQL Server asigna el tipo a ntext. Si el valor de ulColumnSize es menor que la longitud máxima de una columna de tipo de datos de caracteres Unicode, el controlador OLE DB para SQL Server inspecciona el miembro rgPropertySets de DBCOLUMNDESC. Si DBPROP_COL_FIXEDLENGTH es VARIANT_TRUE, OLE DB Driver for SQL Server asigna el tipo a nchar. Si el valor de la propiedad es VARIANT_FALSE, OLE DB Driver for SQL Server asigna el tipo a nvarchar. En cualquier caso, el miembro ulColumnSize de DBCOLUMNDESC determina el ancho de la columna SQL Server creada. |
DBTYPE_XML | XML |
Nota:
Cuando se crea una tabla, el controlador OLE DB para SQL Server solo asigna los valores de enumeración del tipo de datos de OLE DB especificado en la tabla anterior. Al intentar crear una tabla con una columna de cualquier otro tipo de datos de OLE DB, se genera un error.