Поддерживаемые типы данных для выполняющейся в памяти OLTP

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

В этой статье перечислены типы данных, которые не поддерживаются для компонентов выполняющейся в памяти OLTP:

  • Таблицы, оптимизированные для памяти

  • Модули, скомпилированные в собственном коде T-SQL

Неподдерживаемые типы данных

Следующие типы данных не поддерживаются:

geography (Transact-SQL)

rowversion (Transact-SQL)

Определяемые пользователем типы

Важные поддерживаемые типы данных

Большинство типов данных поддерживаются компонентами выполняющейся в памяти OLTP. Обратите внимание на следующие компоненты:

Строковые и двоичные типы Для получения дополнительных сведений
binary и varbinary* binary и varbinary (Transact-SQL)
char и varchar* char и varchar (Transact-SQL)
nchar и nvarchar* nchar и nvarchar (Transact-SQL)

Для предшествующих строковых и двоичных типов данных, начиная с SQL Server 2016:

  • Отдельная оптимизированная для памяти таблица может также содержать несколько столбцов типа long, например nvarchar(4000), даже если их совокупная длина превысит размер физической строки 8060 байт.

  • Оптимизированная для памяти таблица может содержать строковые и двоичные столбцы с максимальной длиной таких типов данных, например varchar(max).

Определение LOB-столбцов и других столбцов вне строки

Начиная с SQL Server 2016, оптимизированные для памяти таблицы поддерживают хранение столбцов вне строки, что позволяет одной табличной строке иметь размер более 8060 байт. Следующая инструкция Transact-SQL SELECT возвращает все столбцы вне строки для таблиц, оптимизированных для памяти. Обратите внимание на следующие условия.

  • Все ключевые столбцы индекса сохранены в строке.
    • Теперь ключи неуникальных индексов могут включать столбцы со значениями NULL в таблицах, оптимизированных для памяти.
    • Индексы могут быть объявлены как UNIQUE для таблицы, оптимизированной для памяти.
  • Все столбцы LOB хранятся вне строки.
  • max_lengthax_length со значением -1 означает столбец большого объекта (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;

Прочие типы данных

Другие типы Для получения дополнительных сведений
табличные типы Основные сведения о табличных переменных, оптимизированных для памяти

См. также

Поддержка Transact-SQL для выполняющейся в памяти OLTP
Реализация SQL_VARIANT в таблице, оптимизированной для памяти
Размер строки и таблицы для таблиц, оптимизированных для памяти