Конструкции языка Transact-SQL, неподдерживаемые в In-Memory OLTP

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Оптимизированные для памяти таблицы, скомпилированные в собственном коде хранимые процедуры и определяемые пользователем функции не поддерживают полную область поверхности Transact-SQL, которая поддерживается таблицами на основе дисков, интерпретируемыми хранимыми процедурами Transact-SQL и определяемыми пользователем функциями. При попытке использовать одну из неподдерживаемых функций сервер возвращает ошибку.

Текст сообщения об ошибке упоминает тип инструкции Transact-SQL (компонент, операция, вариант, например) и имя ключевого слова компонента или Transact-SQL. Большинство неподдерживаемых функций возвращают ошибку 10794, а текст сообщения об ошибке указывает на неподдерживаемую функцию. В следующих таблицах перечислены функции и ключевые слова Transact-SQL, которые могут отображаться в тексте сообщения об ошибке, а также корректирующее действие для устранения ошибки.

Дополнительные сведения о поддерживаемых функциях для оптимизированных для памяти таблиц и скомпилированных в собственном коде хранимых процедур см. на следующих ресурсах:

Базы данных, использующие OLTP в памяти

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

Тип Имя. Разрешение
Вариант AUTO_CLOSE Параметр базы данных AUTO_CLOSE=ON не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.
Вариант ATTACH_REBUILD_LOG Параметр ATTACH_REBUILD_LOG инструкции CREATE базы данных не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.
Функция DATABASE SNAPSHOT Создание моментальных снимков базы данных не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.
Функция Репликация с помощью метода синхронизации «database snapshot» или «database snapshot character» Репликация с помощью метода синхронизации «database snapshot» или «database snapshot character» не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.
Функция DBCC CHECKDB

DBCC CHECKTABLE
DBCC CHECKDB пропускает оптимизированные для памяти таблицы в базе данных.

DBCC CHECKTABLE для таблиц, оптимизированных для памяти, завершается ошибкой.

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

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

Тип Имя. Разрешение
Функция DNS Оптимизированные для памяти таблицы не могут размещаться в файловой группе или схеме секционирования. Удалите предложение ON из инструкции CREATE TABLE .

Все оптимизированные для памяти таблицы сопоставляются с оптимизированной для памяти файловой группой.
Тип данных Название типа данных Указанный тип данных не поддерживается. Замените этот тип одним из поддерживаемых типов данных. Дополнительные сведения см. в статье Поддерживаемые типы данных для выполняющейся в памяти OLTP.
Функция Вычисляемые столбцы Область применения: SQL Server 2014 (12.x) и SQL Server 2016 (13.x)
Вычисляемые столбцы не поддерживаются для оптимизированных для памяти таблиц. Удалите вычисляемые столбцы из инструкции CREATE TABLE .

База данных SQL Azure и SQL Server, начиная с SQL Server 2017 (14.x), поддерживают вычисляемые столбцы в оптимизированных для памяти таблицах и индексах.
Функция Репликация Репликация не поддерживается для таблиц, оптимизированных для памяти.
Функция FILESTREAM Хранилище FILESTREAM не поддерживает столбцы оптимизированных для памяти таблиц. Удалите ключевое слово FILESTREAM из определения столбца.
Функция SPARSE Столбцы оптимизированных для памяти таблиц не могут быть определены как SPARSE. Удалите ключевое слово SPARSE из определения столбца.
Функция ROWGUIDCOL Параметр ROWGUIDCOL не поддерживается для столбцов таблиц, оптимизированных для памяти. Удалите ключевое слово ROWGUIDCOL из определения столбца.
Функция FOREIGN KEY Область применения: База данных SQL Azure и SQL Server, начиная с SQL Server 2016 (13.x)
Для таблиц, оптимизированных для памяти, ограничения FOREIGN KEY поддерживаются только для внешних ключей, ссылающихся на первичные ключи других таблиц, оптимизированных для памяти. Удалите ограничение из определения таблицы, если внешний ключ ссылается на уникальное ограничение.

В SQL Server 2014 (12.x) ограничения FOREIGN KEY не поддерживаются в таблицах, оптимизированных для памяти.
Функция кластеризованный индекс Укажите некластеризованный индекс. В случае использования индекса первичного ключа необходимо указать PRIMARY KEY NONCLUSTERED.
Функция DDL в транзакциях Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры нельзя создавать или удалять в контексте пользовательской транзакции. Не начинайте транзакцию до выполнения инструкции CREATE или DROP и проверьте, чтобы параметр сеанса IMPLICIT_TRANSACTIONS имел значение OFF.
Функция DDL, триггеры Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры нельзя создать или удалить, если есть триггер сервера или базы данных для этой DDL-операции. Удалите триггеры сервера и базы данных для операций CREATE/DROP TABLE и CREATE/DROP PROCEDURE.
Функция EVENT NOTIFICATION Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры нельзя создать или удалить, если есть уведомление о событии сервера или базы данных для этой DDL-операции. Удалите уведомления о событиях сервера и базы данных в CREATE TABLE или DROP TABLE, а также в CREATE PROCEDURE или DROP PROCEDURE.
Функция FileTable Оптимизированные для памяти таблицы не могут быть созданы как файловые таблицы. Удалите аргумент AS FileTable из инструкции CREATE TABLE .
Операция Обновление столбцов первичного ключа Столбцы первичного ключа в оптимизированных для памяти таблицах и табличных типах нельзя обновить. Если первичный ключ должен быть обновлен, удалите старую строку и вставьте новую строку с обновленным первичным ключом.
Операция CREATE INDEX Индексы в оптимизированных для памяти таблицах нужно указывать в инструкции CREATE TABLE или ALTER TABLE .
Операция CREATE FULLTEXT INDEX Полнотекстовые индексы не поддерживаются с оптимизированными для памяти таблицами.
Операция изменение схемы Оптимизированные для памяти таблицы и скомпилированные в машинный код хранимые процедуры не поддерживают некоторые изменения схемы.
поддерживаются База данных SQL Azure и SQL Server, начиная с SQL Server 2017 (14.x): ALTER TABLE, ALTER PROCEDURE и sp_rename операции. Другие изменения схемы, например добавление расширенных свойств, не поддерживаются.

SQL Server 2016 (13.x): поддерживаются операции ALTER TABLE и ALTER PROCEDURE. Другие изменения схемы, включая sp_rename, не поддерживаются.

SQL Server 2014 (12.x): изменения схемы не поддерживаются. Чтобы изменить определение оптимизированной для памяти таблицы или скомпилированной в собственном коде хранимой процедуры, сначала удалите объект и повторно создайте его с нужным определением.
Операция TRUNCATE TABLE Операция TRUNCATE не поддерживается для оптимизированных для памяти таблиц. Чтобы удалить из таблицы все строки, используйте DELETE FROM <таблица> либо удалите таблицу и создайте ее заново.
Операция ALTER AUTHORIZATION Изменение владельца существующей оптимизированной для памяти таблицы или скомпилированной хранимой процедуры не поддерживается. Для изменения владельца удалите и заново создайте таблицу или процедуру.
Операция ALTER SCHEMA Передача существующей таблицы или скомпилированной в машинный код хранимой процедуры в другую схему не поддерживается. Чтобы передать объект из одной схемы в другую, удалите его, а затем создайте повторно.
Операция DBCC CHECKTABLE Операции DBCC CHECKTABLE не поддерживаются для таблиц, оптимизированных для памяти. Чтобы проверить целостность файлов контрольных точек на диске, выполните резервное копирование файловой группы MEMORY_OPTIMIZED_DATA.
Функция ANSI_PADDING OFF Параметр сеанса ANSI_PADDING должен быть установлен в ON при создании оптимизированной для памяти таблицы или скомпилированной хранимой процедуры. Выполните SET ANSI_PADDING ON перед выполнением инструкции CREATE.
Вариант DATA_COMPRESSION Сжатие данных не поддерживается для оптимизированных для памяти таблиц. Удалите выбранный параметр из определения таблицы.
Функция DTC Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры недоступны из распределенных транзакций. Вместо этого используйте транзакции SQL.
Операция Оптимизированные для памяти таблицы в качестве назначения MERGE Оптимизированные для памяти таблицы не могут быть целью операции MERGE . Вместо этого используйте инструкции INSERT, UPDATE и DELETE.

Индексы для оптимизированных для памяти таблиц

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

Тип Имя. Разрешение
Функция Фильтруемый индекс Отфильтрованные индексы для таблиц, оптимизированных для памяти, не поддерживаются. Пропустите предложение WHERE из определения индекса.
Функция Включенные столбцы Указывать включенные столбцы в отношении оптимизированных для памяти таблиц не требуется. Все столбцы оптимизированной для памяти таблицы неявно включаются в каждый оптимизированный для памяти индекс.
Операция DROP INDEX Удаление индексов к таблицам, оптимизированным для памяти, не поддерживается. Вы можете удалить индексы с помощью инструкции ALTER TABLE.

Дополнительные сведения см. в статье Изменение таблиц с оптимизацией для памяти.
Параметр индекса Параметр индекса Поддерживается только один вариант индекса — BUCKET_COUNT для индексов HASH.

Некластеризованные хэш-индексы

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

Тип Имя. Разрешение
Вариант ASC/DESC Некластеризованные хэш-индексы не упорядочиваются. Удалите ключевые слова ASC и DESC из спецификации ключа индекса.

Скомпилированные в собственном коде хранимые процедуры и определяемые пользователем функции

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

Тип Функция Разрешение
Функция Встроенные табличные переменные Табличные типы нельзя объявлять как встроенные с объявлениями переменных. Табличные типы должны быть объявлены явно с помощью инструкции CREATE TYPE .
Функция Курсоры Курсоры не поддерживаются в пределах хранимых процедур, скомпилированных в собственном коде.

При выполнении процедуры из клиента используйте RPC вместо API курсора. При использовании ODBC избежать инструкции Transact-SQL EXECUTE, вместо этого укажите имя процедуры напрямую.

При выполнении процедуры из пакета Transact-SQL или другой хранимой процедуры избегайте использования курсора с скомпилированной в собственном коде хранимой процедурой.

При создании скомпилированной хранимой процедуры не используйте курсор, а применяйте логику, основанную на наборах, или цикл WHILE .
Функция Неконстантные значения по умолчанию для параметров При использовании значений по умолчанию с параметрами для скомпилированных хранимых процедур эти значения должны быть константами. Удалите все шаблоны из определений параметров.
Функция EXTERNAL Хранимые процедуры CLR нельзя скомпилировать в собственном коде. Удалите предложение AS EXTERNAL или параметр NATIVE_COMPILATION в инструкции CREATE PROCEDURE.
Функция Нумерованные хранимые процедуры Изначально скомпилированные хранимые процедуры нельзя пронумеровать. Удаление ;номер из инструкции CREATE PROCEDURE .
Функция многострочное вставка ... Инструкции VALUES Нельзя вставить несколько строк с использованием одной и той же инструкции INSERT в скомпилированной хранимой процедуре. Создайте инструкции INSERT для каждой строки.
Функция Обобщенные табличные выражения Обобщенные табличные выражения (CTE) не поддерживаются в скомпилированных хранимых процедурах. Заново составить запрос.
Функция СРЕДА ВЫПОЛНЕНИЯ ПРИЛОЖЕНИЙ Предложение COMPUTE не поддерживается. Удалите его из запроса.
Функция SELECT INTO Предложение INTO в инструкции SELECT не поддерживается. Перепишите запрос в следующей форме: INSERT INTO Таблица SELECT.
Функция неполный список вставки столбцов В общем случае в инструкциях INSERT необходимо указывать значения для всех столбцов таблицы.

Тем не менее мы поддерживаем ограничения DEFAULT и столбцы IDENTITY(1,1) в оптимизированных для памяти таблицах. Эти столбцы могут присутствовать, но если должны присутствовать столбцы IDENTITY, они исключаются из списка столбцов INSERT.
Функция Function Некоторые встроенные функции не поддерживаются в скомпилированных в собственном коде хранимых процедурах. Удалите такую функцию из хранимой процедуры. Дополнительные сведения о поддерживаемых встроенных функциях см. в следующих источниках:
Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL
Скомпилированные в собственном коде хранимые процедуры
Функция Затраты Область применения: SQL Server 2014 (12.x) и SQL Server, начиная с SQL Server 2016 (13.x)
Выражения CASE не поддерживаются в запросах внутри скомпилированных в машинном коде хранимых процедур. Создайте запросы для каждого случая. Дополнительные сведения см. в статье Реализация выражения CASE в скомпилированной в собственном коде хранимой процедуре.

База данных SQL Azure и SQL Server, начиная с SQL Server 2017 (14.x), поддерживают выражения CASE.
Функция INSERT EXECUTE Удаление ссылки.
Функция Выполнение  Поддерживается только скомпилированными в собственном коде хранимыми процедурами и определяемыми пользователем функциями.
Функция пользовательские агрегаты Определяемые пользователем агрегатные функции нельзя использовать в скомпилированных хранимых процедурах. Удалите ссылку на функцию из процедуры.
Функция режим просмотра метаданных Скомпилированные хранимые процедуры не поддерживают режима обзора метаданных. Убедитесь, что параметр сеанса NO_BROWSETABLE установлен в значение OFF.
Функция Инструкции DELETE с предложением FROM В хранимых процедурах, скомпилированных в собственном коде, предложение FROM в инструкциях DELETE с таблицей-источником не поддерживается.

DELETE с предложением FROM поддерживается только в том случае, если она используется для указания таблицы, из которой производится удаление.
Функция UPDATE с предложением FROM Предложение FROM не поддерживается в инструкциях UPDATE скомпилированных хранимых процедур.
Функция временные процедуры Временные хранимые процедуры нельзя скомпилировать в собственном коде. Создайте постоянную скомпилированную в собственном коде хранимую процедуру или временную интерпретированную хранимую процедуру Transact-SQL.
Уровень изоляции READ UNCOMMITTED Уровень изоляции READ UNCOMMITTED не поддерживается для скомпилированных хранимых процедур. Используйте поддерживаемый уровень изоляции, например SNAPSHOT.
Уровень изоляции ЗАФИКСИРОВАННАЯ ОПЕРАЦИЯ ЧТЕНИЯ Уровень изоляции READ COMMITTED не поддерживается для скомпилированных в собственном коде хранимых процедур. Используйте поддерживаемый уровень изоляции, например SNAPSHOT.
Функция временные таблицы Таблицы в базе данных tempdb нельзя использовать в скомпилированных хранимых процедурах. Вместо этого используйте табличную переменную или оптимизированную для памяти таблицу с DURABILITY=SCHEMA_ONLY.
Функция DTC Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры недоступны из распределенных транзакций. Вместо этого используйте транзакции SQL.
Функция EXECUTE WITH RECOMPILE Параметр WITH RECOMPILE не поддерживается для скомпилированных хранимых процедур.
Функция Выполнение из выделенного административного соединения. Скомпилированные хранимые процедуры не могут быть выполнены из выделенного административного соединения (DAC). Вместо этого используйте обычное соединение.
Операция точка сохранения Скомпилированные хранимые процедуры не могут быть вызваны из транзакции с активной точкой сохранения. Удалите точку сохранения из транзакции.
Операция ALTER AUTHORIZATION Изменение владельца существующей оптимизированной для памяти таблицы или скомпилированной хранимой процедуры не поддерживается. Для изменения владельца удалите и заново создайте таблицу или процедуру.
Оператор OPENROWSET Данный оператор не поддерживается. Удалите OPENROWSET из скомпилированной хранимой процедуры.
Оператор OPENQUERY Данный оператор не поддерживается. Удалите OPENQUERY из скомпилированной хранимой процедуры.
Оператор OPENDATASOURCE Данный оператор не поддерживается. Удалите OPENDATASOURCE из скомпилированной хранимой процедуры.
Оператор OPENXML Данный оператор не поддерживается. Удалите OPENXML из скомпилированной хранимой процедуры.
Оператор CONTAINSTABLE Данный оператор не поддерживается. Удалите CONTAINSTABLE из скомпилированной хранимой процедуры.
Оператор FREETEXTTABLE Данный оператор не поддерживается. Удалите FREETEXTTABLE из скомпилированной хранимой процедуры.
Функция функции с табличным значением К функциям с табличным значением не может производиться обращение из скомпилированных хранимых процедур. Одно возможное решение для этого ограничения — добавление логики для функций с табличным значением в текст процедуры.
Оператор CHANGETABLE Данный оператор не поддерживается. Удалите CHANGETABLE из скомпилированной хранимой процедуры.
Оператор GOTO Данный оператор не поддерживается. Используйте другие конструкции, такие как WHILE.
Оператор OFFSET Данный оператор не поддерживается. Удалите OFFSET из скомпилированной хранимой процедуры.
Оператор INTERSECT Данный оператор не поддерживается. Удалите INTERSECT из скомпилированной хранимой процедуры. В некоторых случаях можно использовать INNER JOIN, чтобы получить тот же результат.
Оператор ИСКЛЮЧЕНИЯ Данный оператор не поддерживается. Удалите EXCEPT из скомпилированной хранимой процедуры.
Оператор ПРИМЕНИТЬ Область применения: SQL Server 2014 (12.x) и SQL Server, начиная с SQL Server 2016 (13.x)
Данный оператор не поддерживается. Удалите APPLY из скомпилированной хранимой процедуры.

База данных SQL Azure и SQL Server, начиная с SQL Server 2017 (14.x), поддерживают оператор APPLY в скомпилированных модулях в собственном коде.
Оператор PIVOT Данный оператор не поддерживается. Удалите PIVOT из скомпилированной хранимой процедуры.
Оператор UNPIVOT Данный оператор не поддерживается. Удалите UNPIVOT из скомпилированной хранимой процедуры.
Оператор CONTAINS Данный оператор не поддерживается. Удалите CONTAINS из скомпилированной хранимой процедуры.
Оператор FREETEXT Данный оператор не поддерживается. Удалите FREETEXT из скомпилированной хранимой процедуры.
Оператор TSEQUAL Данный оператор не поддерживается. Удалите TSEQUAL из скомпилированной хранимой процедуры.
Оператор LIKE Данный оператор не поддерживается. Удалите LIKE из скомпилированной хранимой процедуры.
Оператор NEXT VALUE FOR Из скомпилированных хранимых процедур нельзя обращаться к последовательностям. Получите значение с помощью интерпретированного Transact-SQL, а затем передайте его в скомпилированную в собственном коде хранимую процедуру. Дополнительные сведения см. в статье Реализация IDENTITY в таблице, оптимизированной для памяти.
Параметр SET Параметр Параметры SET нельзя изменить внутри скомпилированных хранимых процедур. Некоторые параметры можно задать с помощью инструкции BEGIN ATOMIC. Дополнительные сведения см. в разделе об атомарных блоках в скомпилированных хранимых процедурах в собственном коде.
Операнд TABLESAMPLE Данный оператор не поддерживается. Удалите TABLESAMPLE из скомпилированной хранимой процедуры.
Вариант RECOMPILE Компилируемые хранимые процедуры компилируются во время создания. Удалите RECOMPILE из определения процедуры.

Вы можете выполнить sp_recompile для скомпилированной в собственном коде хранимой процедуры, что приведет к повторной компиляции при следующем выполнении.
Вариант ШИФРОВАНИЕ Этот параметр не поддерживается. Удалите ENCRYPTION из определения процедуры.
Вариант FOR REPLICATION Скомпилированные хранимые процедуры не могут быть созданы во время репликации. Удалите FOR REPLICATION из определения процедуры.
Вариант FOR XML Этот параметр не поддерживается. Удалите FOR XML из скомпилированной хранимой процедуры.
Вариант FOR BROWSE Этот параметр не поддерживается. Удалите FOR BROWSE из скомпилированной хранимой процедуры.
Указание соединения HASH, MERGE Скомпилированные хранимые процедуры поддерживают только соединения во вложенных циклах. Соединения слиянием и хэша не поддерживаются. Удалите указание соединения.
Указание запроса Указание запроса Данное указание запроса не находится внутри скомпилированных хранимых процедур. Поддерживаемые подсказки запросов см. в разделе "Подсказки запросов" (Transact-SQL).
Вариант ПРОЦЕНТ Этот параметр не поддерживается с предложениями TOP . Удалите PERCENT из запроса в скомпилированной хранимой процедуре.
Вариант WITH TIES Область применения: SQL Server 2014 (12.x) и SQL Server 2016 (13.x)
Этот параметр не поддерживается с предложениями TOP . Удалите WITH TIES из запроса в скомпилированной хранимой процедуре.

База данных SQL Azure и SQL Server, начиная с SQL Server 2017 (14.x), поддерживаются СВЕРХУ С СВЯЗЯМИ.
Агрегатная функция Агрегатная функция Поддерживаются не все агрегатные функции. Дополнительные сведения об агрегатных функциях, поддерживаемых в скомпилированных в машинный код модулях T-SQL, см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.
Ранжирующая функция Ранжирующая функция Ранжирующие функции не поддерживаются в скомпилированных хранимых процедурах. Удалите их из определения процедуры.
Function Function Эта функция не поддерживается. Дополнительные сведения о функциях, поддерживаемых в скомпилированных в машинный код модулях T-SQL, см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.
Оператор Оператор Данная инструкция не поддерживается. Дополнительные сведения о функциях, поддерживаемых в скомпилированных в машинный код модулях T-SQL, см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.
Функция Значения MIN и MAX, используемые с двоичными и символьными строками Агрегатные функции MIN и MAX нельзя использовать для символьных и двоичных строковых значений в скомпилированных хранимых процедурах.
Функция GROUP BY ALL ALL нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах. Удалите ALL из предложения GROUP BY.
Функция GROUP BY () Группирование по пустому списку не поддерживается. Либо удалите предложение GROUP BY, либо включите столбцы в список группирования.
Функция ROLLUP ROLLUP нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах. Удалите ROLLUP из определения процедуры.
Функция CUBE CUBE нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах. Удалите CUBE из определения процедуры.
Функция GROUPING SETS GROUPING SETS нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах. Удалите GROUPING SETS из определения процедуры.
Функция BEGIN TRANSACTION, COMMIT TRANSACTION и ROLLBACK TRANSACTION Используйте блоки ATOMIC для управления транзакциями и обработки ошибок. Дополнительные сведения см. в статье Atomic Blocks.
Функция Встроенные объявления табличной переменной. Табличные переменные должны ссылаться на явно определенные табличные типы с оптимизацией для памяти. Необходимо создать тип оптимизированной для памяти таблицы и использовать этот тип для объявления переменной вместо указания встроенного типа.
Функция Таблицы на диске Доступ к таблицам на диске нельзя осуществлять из скомпилированных в собственном коде хранимых процедур. Удалите ссылки на таблицы на основе дисков из скомпилированных в собственном коде хранимых процедур. Либо выполните миграцию таблиц на диске в таблицы, оптимизированные для памяти.
Функция Представления Доступ к представлениям нельзя осуществлять из скомпилированных в собственном коде хранимых процедур. Вместо представлений ссылайтесь на базовые таблицы.
Функция Функции с табличным значением Область применения: База данных SQL Azure и SQL Server, начиная с SQL Server 2016 (13.x)
К функциям с несколькими инструкциями и табличными значениями нельзя обращаться из скомпилированных в машинный код модулей T-SQL. Встроенные функции с табличными значениями поддерживаются, но должны создаваться с пометкой WITH NATIVE_COMPILATION.

Область применения: SQL Server 2014 (12.x)
К функциям с табличными значениями нельзя обращаться из скомпилированных в машинный код модулей T-SQL.
Вариант PRINT Удаление ссылки.
Функция DDL Код на языке описания данных DDL не поддерживается в модулях T-SQL, скомпилированных в машинный код.
Вариант STATISTICS XML Не поддерживается. Когда вы выполняете запрос с включенным параметром STATISTICS XML, XML-содержимое возвращается без части для скомпилированной в собственном коде хранимой процедуры.

Транзакции, обращающиеся к оптимизированным для памяти таблицам

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

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

См. также

Миграция в In-Memory OLTP