Неподдерживаемые функции SQL Server для выполняющейся в памяти OLTP

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

В этом разделе рассматриваются функции SQL Server, которые не поддерживаются для использования с оптимизированными для памяти объектами. Кроме того, в последнем разделе перечислены функции, которые не поддерживались для выполняющейся в памяти OLTP, однако более поздние версии стали поддерживаться.

Функции SQL Server не поддерживаются для OLTP в памяти

Следующие функции SQL Server не поддерживаются в базе данных с оптимизированными для памяти объектами (включая файловую группу данных, оптимизированную для памяти).

Неподдерживаемая функция Описание функции
Сжатие данных для оптимизированных для памяти таблиц. Функцию сжатия данных можно использовать для сжатия данных внутри базы данных, а также уменьшения размера базы данных. Дополнительные сведения см. в разделе Data Compression.
Секционирование оптимизированных для памяти таблиц и хэш-индексов, а также некластеризованных индексов. Данные секционированных таблиц и индексов подразделяются на блоки, которые могут быть распределены по нескольким файловым группам в базе данных. Дополнительные сведения см. в разделе Partitioned Tables and Indexes.
Репликация За исключением репликации транзакций для подписчиков в таблицы, оптимизированные для памяти, конфигурации репликации несовместимы с таблицами и представлениями, ссылающимися на оптимизированные для памяти таблицы.

Если существует файловая группа, оптимизированная для памяти, репликация с помощью sync_mode='database snapshot' не поддерживается.

Дополнительные сведения см. в разделе Репликация на подписчиков оптимизированных для памяти таблиц.
Зеркальное отображение Зеркальное отображение не поддерживается для баз данных с файловой группой MEMORY_OPTIMIZED_DATA. Дополнительные сведения о зеркальных отображениях см. в разделе "Зеркальное отображение базы данных" (SQL Server).
Повторная сборка журнала Повторная сборка журнала с помощью прикрепления или ALTER DATABASE не поддерживается базами данных с файловой группой MEMORY_OPTIMIZED_DATA.
Связанный сервер Нельзя получить доступ к связанным серверам в том же запросе или транзакции, в которой используются оптимизированные для памяти таблицы. Дополнительные сведения см. в статье Связанные серверы (ядро СУБД).
С неполным протоколированием Вне зависимости от модели восстановления базы данных все операции в устойчивых таблицах, оптимизированных для памяти, всегда полностью протоколируются.
Минимальное протоколирование Минимальное протоколирование не поддерживается для оптимизированных для памяти таблиц. Дополнительные сведения о минимальном ведении журнала см. в разделе Журнал транзакций (SQL Server) и предварительные требования для минимального ведения журнала в массовом импорте.
отслеживание изменений Отслеживание изменений не поддерживается для оптимизированных для памяти таблиц.
DDL, триггеры Триггеры уровня базы данных и триггеры DDL уровня сервера не поддерживаются в таблицах OLTP в памяти или с скомпилированных в собственном коде модулями.
Система отслеживания измененных данных (CDC) SQL Server 2017 CU15 и более поздние версии поддерживают включение CDC в базах данных с таблицами, оптимизированными в памяти. Это значение применимо только к базе данных и таблицам на диске в базе данных. В более ранних версиях SQL Server систему CDC не допускается использовать с базой данных, содержащей оптимизированные в памяти таблицы, так как внутри CDC используется DDL-триггер для DROP TABLE.
Режим волокон Режим волокон не поддерживается для таблиц, оптимизированных для памяти.

Если режим волокон активен, вы не сможете создавать базы данных с файловыми группами, оптимизированными для памяти, или добавлять такие группы в существующие базы данных.

Режим волокон можно включить, если существуют базы данных с файловыми группами, оптимизированными для памяти. Однако включение режима волокон требует перезапуска сервера. В этом случае базы данных с файловыми группами, оптимизированными для памяти, не восстанавливаются. Вы увидите сообщение об ошибке с предложением отключить режим волокон, чтобы использование таких баз данных стало возможным.

Если режим волокон активен, присоединение и восстановление базы данных с оптимизированной для памяти файловой группой завершается сбоем. Базы данных будут помечены как подозрительные.

Дополнительные сведения см. в разделе Параметр конфигурации сервера «использование упрощенных пулов».
Ограничения Service Broker Нет доступа к очереди из скомпилированной в собственном коде хранимой процедуры.

Нет доступа к очереди в удаленной базе данных в транзакции, получающей доступ к оптимизированным для памяти таблицам.
Репликация в подписчиков Репликация транзакций для подписчиков в таблицы, оптимизированные для памяти, поддерживается, но с некоторыми ограничениями. Дополнительные сведения см. в статье Репликация на подписчиков оптимизированных для памяти таблиц.

Запросы и транзакции между базами данных

При некоторых исключениях транзакции между базами данных не поддерживаются. В следующей таблице описываются варианты, которые поддерживаются, и соответствующие ограничения. (См. также Межбазовые запросы.)

Databases Допустимо Description
Пользовательские базы данных, model и msdb. No В большинстве случаев запросы и транзакции между базами данных не поддерживаются.

Запрос не может получить доступ к другим базам данных, если он использует таблицу, оптимизированную для памяти, или хранимую процедуру, компилируемую в собственном коде. Это ограничение применяется к транзакциям и запросам.

Исключения: системные базы данных tempdb и master. Здесь база данных master доступна только для чтения.
База данных Resource, tempdb Да В транзакции, которая касается объектов In-Memory OLTP, системные базы данных Resource и tempdb можно использовать без дополнительного ограничения.

Неподдерживаемые сценарии

  • Доступ к таблицам, оптимизированным для памяти, с помощью контекстного подключения изнутри хранимых процедур CLR.

  • Набор ключей и динамические курсоры в запросах, обращающихся к оптимизированным для памяти таблицам. Функциональность этих курсоров понижена, теперь они статические и доступны только для чтения.

  • Не поддерживается использование MERGE INTOtarget, где target — оптимизированная для памяти таблица.

    • MERGE USINGsource для таблиц, оптимизированных для памяти, поддерживается.
  • Тип данных ROWVERSION (TIMESTAMP) не поддерживается. Дополнительные сведения см. в разделе FROM (Transact-SQL).

  • Автоматическое закрытие не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.

  • Транзакционные DDL-элементы, такие как CREATE, ALTER или DROP для объектов In-Memory OLTP, не поддерживаются в пользовательских транзакциях.

  • Уведомление о событии.

  • Управление на основе политик (PBM).

    • Запретить и записывать только режимы PBM не поддерживаются. Наличие таких политик на сервере может помешать успешному выполнению DDL-библиотеки OLTP в памяти. Поддерживаются режимы по запросу и по расписанию.
  • Включение базы данных (автономные базы данных) не поддерживается при выполнении в памяти OLTP.

    • Поддерживается проверка подлинности автономной базы данных. Но все объекты In-Memory OLTP помечаются как нарушающие вложение в динамическом административном представлении (DMV) dm_db_uncontained_entities.

Последние добавленные поддерживаемые возможности

Иногда в более новом выпуске SQL Server доступна поддержка функции, которая ранее не поддерживалась. В этом разделе перечислены функции, которые использовались для неподдерживаемых для OLTP в памяти, но позже они стали поддерживаться для OLTP в памяти.

В следующей таблице значения версии, такие как (15.x), представляют собой значение, возвращаемое инструкцией Transact-SQL SELECT @@Version;.

Имя функции Версия SQL Server Комментарии
Моментальные снимки базы данных 2019 (15.x) Теперь моментальные снимки базы данных поддерживаются для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.

См. также