Неподдерживаемые функции SQL Server для выполняющейся в памяти OLTP
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр 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 | Нет доступа к очереди из скомпилированной в собственном коде хранимой процедуры. Нет доступа к очереди в удаленной базе данных в транзакции, получающей доступ к оптимизированным для памяти таблицам. |
Репликация в подписчиков | Репликация транзакций для подписчиков в таблицы, оптимизированные для памяти, поддерживается, но с некоторыми ограничениями. Дополнительные сведения см. в статье Репликация на подписчиков оптимизированных для памяти таблиц. |
Запросы и транзакции между базами данных
При некоторых исключениях транзакции между базами данных не поддерживаются. В следующей таблице описываются варианты, которые поддерживаются, и соответствующие ограничения. (См. также Межбазовые запросы.)
Базы данных | Допустимо | Description |
---|---|---|
Пользовательские базы данных, model и msdb. | No | В большинстве случаев запросы и транзакции между базами данных не поддерживаются. Запрос не может получить доступ к другим базам данных, если он использует таблицу, оптимизированную для памяти, или хранимую процедуру, компилируемую в собственном коде. Это ограничение применяется к транзакциям и запросам. Исключения: системные базы данных tempdb и master. Здесь база данных master доступна только для чтения. |
База данных Resource, tempdb | Да | В транзакции, которая касается объектов In-Memory OLTP, системные базы данных Resource и tempdb можно использовать без дополнительного ограничения. |
Неподдерживаемые сценарии
Доступ к таблицам, оптимизированным для памяти, с помощью контекстного подключения изнутри хранимых процедур CLR.
Набор ключей и динамические курсоры в запросах, обращающихся к оптимизированным для памяти таблицам. Функциональность этих курсоров понижена, теперь они статические и доступны только для чтения.
Не поддерживается использование MERGE INTO target, где target — оптимизированная для памяти таблица.
- MERGE USING source для таблиц, оптимизированных для памяти, поддерживается.
Тип данных 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. |