Tipos de datos admitidos para OLTP en memoria

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En este artículo se enumeran los tipos de datos que no son compatibles para las características de OLTP en memoria de:

  • Tablas optimizadas para memoria

  • Módulos T-SQL compilados de manera nativa

Tipos de datos no compatibles

No se admiten los tipos de datos siguientes:

geography (Transact-SQL)

rowversion (Transact-SQL)

Tipos definidos por el usuario

Tipos de datos admitidos importantes

La mayoría de los tipos de datos son compatibles con las características de OLTP en memoria. A continuación se indican solo algunos que conviene señalar explícitamente:

Tipos de cadena y binario Para obtener más información
binary y varbinary* binary y varbinary (Transact-SQL)
char y varchar* char y varchar (Transact-SQL)
nchar y nvarchar* nchar y 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:

  • 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.

  • Una tabla optimizada para memoria puede tener columnas de tipos de datos de cadena y binarias de longitud máxima, como varchar(max).

Identificar las columnas de LOB y otras columnas no consecutivas

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. La siguiente instrucción Transact-SQL SELECT informa de todas las columnas que no son consecutivas en tablas optimizadas para memoria. Ten en cuenta lo siguiente:

  • Todas las columnas de clave de índice se almacenan en filas consecutivas.
    • Las claves de índice no únicas ahora pueden incluir columnas que aceptan valores NULL en tablas optimizadas para memoria.
    • Los índices se pueden declarar como UNIQUE en una tabla optimizada para memoria.
  • Todas las columnas de LOB se almacenan en filas no consecutivas.
  • Un valor en max_length de -1 indica una columna de objetos grandes (LOB).
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 datos

Otros tipos Para obtener más información
Tipos de tabla Variables de tabla con optimización para memoria

Consulte también

Compatibilidad de Transact-SQL con OLTP en memoria
Implementar SQL_VARIANT en una tabla con optimización para memoria
Tamaño de tabla y fila de tabla optimizada para memoria