Tipos de datos admitidos para OLTP en memoriaSupported Data Types for In-Memory OLTP

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

En este artículo se enumeran los tipos de datos que no son compatibles para las características de OLTP en memoria de:This article lists the data types that are unsupported for the In-Memory OLTP features of:

  • Tablas con optimización para memoriaMemory-optimized tables

  • Módulos T-SQL compilados de manera nativaNatively compiled T-SQL modules

Tipos de datos no compatiblesUnsupported Data Types

No se admiten los tipos de datos siguientes:The following data types are not supported:

datetimeoffset (Transact-SQL)datetimeoffset (Transact-SQL) geography (Transact-SQL)geography (Transact-SQL) geometry (Transact-SQL)geometry (Transact-SQL)
hierarchyid (Transact-SQL)hierarchyid (Transact-SQL) rowversion (Transact-SQL)rowversion (Transact-SQL) xml (Transact-SQL)xml (Transact-SQL)
sql_variant (Transact-SQL)sql_variant (Transact-SQL) Tipos definidos por el usuarioUser-Defined Types ..

Tipos de datos admitidos importantesNotable Supported Data Types

La mayoría de los tipos de datos son compatibles con las características de OLTP en memoria.Most data types are supported by the features of In-Memory OLTP. A continuación se indican solo algunos que conviene señalar explícitamente:The following few are worth noting explicitly:

Tipos de cadena y binarioString and Binary Types Para obtener más informaciónFor more information
binary y varbinary*binary and varbinary* binary y varbinary (Transact-SQL)binary and varbinary (Transact-SQL)
char y varchar*char and varchar* char y varchar (Transact-SQL)char and varchar (Transact-SQL)
nchar y nvarchar*nchar and nvarchar* nchar y nvarchar (Transact-SQL)nchar and nvarchar (Transact-SQL)

A partir de SQL Server 2016, cabe destacar lo siguiente en relación con los tipos de datos binarios y de cadena anteriores:For the preceding string and binary data types, starting with SQL Server 2016:

  • Cada tabla individual optimizada para memoria puede tener varias columnas long como nvarchar(4000), aunque sus longitudes agregarían más que el tamaño de fila físico de 8060 bytes.An individual memory-optimized table can also have several long columns such as nvarchar(4000), even though their lengths would add to more than the physical row size of 8060 bytes.

  • Una tabla optimizada para memoria puede tener columnas de tipos de datos de cadena y binarias de longitud máxima, como varchar(max).A memory-optimized table can have max length string and binary columns of data types such as varchar(max).

Identificar las columnas de LOB y otras columnas no consecutivasIdentify LOBs and other columns that are off-row

A partir de SQL Server 2016, las tablas optimizadas en memoria admiten las columnas de forma no consecutiva, lo que permite que una sola fila de tabla sea mayor que 8060 bytes.Starting with SQL Server 2016, memory-optimized tables support off-row columns, which allow a single table row to be larger than 8060 bytes. La siguiente instrucción Transact-SQL SELECT informa de todas las columnas que no son consecutivas en tablas optimizadas para memoria.The following Transact-SQL SELECT statement reports all columns that are off-row, for memory-optimized tables. Tenga en cuenta lo siguiente:Note that:

  • Todas las columnas de clave de índice se almacenan en filas consecutivas.All index key columns are stored in-row.
    • Las claves de índice no únicas ahora pueden incluir columnas que aceptan valores NULL en tablas optimizadas para memoria.Nonunique index keys can now include NULLable columns, on memory-optimized tables.
    • Los índices se pueden declarar como UNIQUE en una tabla optimizada para memoria.Indexes can be declared as UNIQUE on a memory-optimized table.
  • Todas las columnas de LOB se almacenan en filas no consecutivas.All LOB columns are stored off-row.
  • Un valor en max_length de -1 indica una columna de objetos grandes (LOB).A max_length of -1 indicates a large object (LOB) column.
SELECT
        OBJECT_NAME(m.object_id) as [table],
        c.name                   as [column],
        c.max_length
    FROM
             sys.memory_optimized_tables_internal_attributes AS m
        JOIN sys.columns                                     AS c
                ON  m.object_id = c.object_id
                AND m.minor_id  = c.column_id
    WHERE
        m.type = 5;

Otros tipos de datosOther Data Types

Otros tiposOther Types Para obtener más informaciónFor more information
Tipos de tablatable types Variables de tabla con optimización para memoriaMemory-Optimized Table Variables

Consulte tambiénSee Also

Compatibilidad de Transact-SQL con OLTP en memoria Transact-SQL Support for In-Memory OLTP
Implementar SQL_VARIANT en una tabla con optimización para memoriaImplementing SQL_VARIANT in a Memory-Optimized Table
Tamaño de tabla y fila de tabla optimizada para memoriaTable and Row size in Memory-Optimized Table