Поделиться через


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

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

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

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

Базы данных, использующие In-Memory OLTP

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

Тип Имя Резолюция
Вариант АВТО_ЗАКРЫТИЕ Параметр базы данных AUTO_CLOSE=ON не поддерживается базами данных с MEMORY_OPTIMIZED_DATA файловой группой.
Вариант Присоединить_журнал_восстановления Параметр CREATE database ATTACH_REBUILD_LOG не поддерживается для баз данных с файловой группой данных MEMORY_OPTIMIZED_DATA.
Функция СНИМОК СОСТОЯНИЯ БАЗЫ ДАННЫХ Создание моментальных снимков не поддерживается для баз данных с файловой группой MEMORY_OPTIMIZED_DATA.
Функция Репликация с помощью sync_method "моментальный снимок базы данных" или "характеристика моментального снимка базы данных" Репликация с помощью sync_method "моментальный снимок базы данных" или "тип моментального снимка базы данных" не поддерживается для баз данных с файловой группой MEMORY_OPTIMIZED_DATA.
Функция DBCC CHECKDB - команда проверки целостности базы данных в SQL Server.

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

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

таблицы Memory-Optimized

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

Тип Имя Резолюция
Функция НА Оптимизированные для памяти таблицы нельзя поместить в файловую группу или схему секционирования. Удалите оператор ON из инструкции CREATE TABLE.
Тип данных Имя типа данных Указанный тип данных не поддерживается. Замените тип одним из поддерживаемых типов данных. Дополнительные сведения см. в разделе "Поддерживаемые типы данных".
Функция Вычисляемые столбцы Вычисляемые столбцы не поддерживаются для оптимизированных для памяти таблиц. Удалите вычисляемые столбцы из инструкции CREATE TABLE .
Функция Репликация Репликация не поддерживается в таблицах, оптимизированных для памяти.
Функция FILESTREAM Хранилище FILESTREAM не поддерживает столбцы оптимизированных для памяти таблиц. Удалите ключевое FILESTREAM слово из определения столбца.
Функция РЕДКИЙ Столбцы таблиц, оптимизированных для памяти, не могут быть определены как SPARSE. Удалите ключевое SPARSE слово из определения столбца.
Функция ROWGUIDCOL Параметр ROWGUIDCOL не поддерживается для столбцов оптимизированных для памяти таблиц. Удалите ключевое ROWGUIDCOL слово из определения столбца.
Функция ВНЕШНИЙ КЛЮЧ Ограничения FOREIGN KEY не поддерживаются для таблиц, оптимизированных для памяти. Удалите ограничение из определения таблицы.

Сведения о том, как устранить отсутствие поддержки ограничений, см. в разделе "Миграция проверок" и "Ограничения внешнего ключа".
Функция ПРОВЕРКА Ограничения CHECK не поддерживаются для таблиц, оптимизированных для памяти. Удалите ограничение из определения таблицы.

Сведения о том, как устранить отсутствие поддержки ограничений, см. в разделе "Миграция проверок" и "Ограничения внешнего ключа".
Функция УНИКАЛЬНЫЙ Ограничения UNIQUE не поддерживаются для таблиц, оптимизированных для памяти. Удалите ограничение из определения таблицы.

Сведения о том, как устранить отсутствие поддержки ограничений, см. в разделе "Миграция проверок" и "Ограничения внешнего ключа".
Функция Хранилище данных формата COLUMNSTORE (колоночное хранилище) Индексы COLUMNSTORE не поддерживаются в таблицах, оптимизированных для памяти. Укажите индекс NONCLUSTERED или NONCLUSTERED HASH вместо этого.
Функция кластеризованный индекс Укажите некластеризованный индекс. В случае индекса первичного ключа обязательно укажите PRIMARY KEY NONCLUSTERED [HASH].
Функция Кодовая страница, отличная от 1252 Столбцы в таблицах, оптимизированных для памяти, с типами char данных и varchar должны использовать кодовую страницу 1252. Используйте n(var)char вместо (var)char или используйте сортировку с кодовой страницей 1252 (например, Latin1_General_BIN2). Дополнительные сведения см. в разделе "Параметры сортировки" и "Кодовые страницы".
Функция DDL внутри транзакций Оптимизированные для памяти таблицы и скомпилированные в собственном коде хранимые процедуры нельзя создать или удалить в контексте транзакции пользователя. Не запускайте транзакцию и убедитесь, что параметр сеанса IMPLICIT_TRANSACTIONS OFF перед выполнением инструкции CREATE или DROP.
Функция Триггеры DDL Оптимизированные для памяти таблицы и скомпилированные в собственном коде хранимые процедуры нельзя создать или удалить, если для этой операции DDL существует сервер или триггер базы данных. Удалите триггеры сервера и базы данных в CREATE/DROP TABLE и CREATE/DROP PROCEDURE.
Функция УВЕДОМЛЕНИЕ О СОБЫТИИ Оптимизированные для памяти таблицы и скомпилированные в собственном коде хранимые процедуры нельзя создать или удалить, если для этой операции DDL есть уведомление о событии сервера или базы данных. Уберите уведомления о событиях, связанных с сервером и базой данных при выполнении команд CREATE TABLE или DROP TABLE и CREATE PROCEDURE или DROP PROCEDURE.
Функция Таблица файлов Оптимизированные для памяти таблицы нельзя создавать в виде таблиц файлов. Удаление аргумента AS FileTable из инструкции CREATE TABLE
Операция Обновление первичных ключевых столбцов Не удается обновить первичные ключевые столбцы в оптимизированных для памяти таблицах и типах таблиц. Если первичный ключ необходимо обновить, удалите старую строку и вставьте новую строку с обновленным первичным ключом.
Операция СОЗДАТЬ ИНДЕКС Индексы для таблиц, оптимизированных для памяти, должны быть указаны в соответствии с инструкцией CREATE TABLE . Чтобы добавить индекс в оптимизированную для памяти таблицу, удалите и повторно создайте таблицу, включая новую спецификацию индекса.
Операция ИЗМЕНИТЬ ТАБЛИЦУ Изменение оптимизированных для памяти таблиц не поддерживается. Удалите и повторно создайте таблицу с помощью обновленного определения таблицы.
Операция Создать полнотекстовый индекс Полнотекстовые индексы не поддерживаются для таблиц, оптимизированных для памяти.
Операция Изменение схемы Оптимизированные для памяти таблицы и скомпилированные в собственном коде хранимые процедуры не поддерживают изменения схемы, например sp_rename.

Попытка внести изменения схемы, например переименование таблицы, приведет к возникновению ошибки 12320, операции, требующие изменения версии схемы, например переименование, не поддерживаются в таблицах, оптимизированных для памяти.

Чтобы изменить схему, удалите и заново создайте таблицу или процедуру с помощью обновленного определения.
Операция CREATE TRIGGER Триггеры в таблицах, оптимизированных для памяти, не поддерживаются.
Операция ОЧИСТИТЬ ТАБЛИЦУ Операция TRUNCATE не поддерживается для оптимизированных для памяти таблиц. Чтобы удалить все строки из таблицы, удалите все строки, используя DELETE FROMтаблицу или удалите и заново создайте таблицу.
Операция ИЗМЕНИТЬ АВТОРИЗАЦИЮ Изменение владельца существующей оптимизированной для памяти таблицы или скомпилированной в собственном коде хранимой процедуры не поддерживается. Удалите и вновь создайте таблицу или процедуру, чтобы изменить собственника.
Операция ALTER SCHEMA (Изменить схему) Изменение схемы существующей оптимизированной для памяти таблицы или скомпилированной в собственном коде хранимой процедуры не поддерживается. Удалите и повторно создайте таблицу или процедуру, чтобы изменить схему.
Операция DBCC CHECKTABLE DBCC CHECKTABLE не поддерживается в таблицах, оптимизированных для памяти.
Функция ANSI_PADDING отключен Параметр сеанса ANSI_PADDING должен быть ВКЛЮЧЕН при создании оптимизированных для памяти таблиц или скомпилированных в собственном коде хранимых процедур. Выполните команду SET ANSI_PADDING ON перед запуском инструкции CREATE.
Вариант СЖАТИЕ_ДАННЫХ Сжатие данных не поддерживается для оптимизированных для памяти таблиц. Удалите параметр из определения таблицы.
Функция DTC Оптимизированные для памяти таблицы и скомпилированные в собственном коде хранимые процедуры нельзя получить из распределенных транзакций. Вместо этого используйте транзакции SQL.
Функция Несколько активных результирующих наборов (MARS) Несколько активных результирующих наборов (MARS) не поддерживаются в таблицах, оптимизированных для памяти. Эта ошибка также может указывать на использование связанного сервера. Связанный сервер может использовать MARS. Связанные серверы не поддерживаются с таблицами, оптимизированными по памяти. Вместо этого подключитесь непосредственно к серверу и базе данных, в котором размещаются оптимизированные для памяти таблицы.
Операция Оптимизированные для памяти таблицы в качестве целевого объекта MERGE Таблицы, оптимизированные для памяти, не могут быть целью операции MERGE. Используйте инструкции INSERT, UPDATE или DELETE.

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

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

Тип Имя Резолюция
Функция Отфильтрованный индекс Отфильтрованные индексы не поддерживаются в таблицах, оптимизированных для памяти. Исключить WHERE предложение из описания индекса.
Функция УНИКАЛЬНЫЙ Уникальные индексы не поддерживаются для оптимизированных для памяти таблиц. Удалите аргумент UNIQUE из спецификации индекса.
Функция Столбцы, допускающие значение NULL Все столбцы в ключе индекса в оптимизированной для памяти таблице должны быть указаны как NOT NULL. NOT NULL Включите ограничение со всеми столбцами в ключи индекса.
Функция Параметры сортировки, отличные от bin2 Все столбцы символов в ключе оптимизированного для памяти индекса должны быть объявлены с помощью сортировки BIN2. Используйте оператор COLLATE для задания параметров сортировки в определении столбца. Дополнительные сведения см. в разделе "Параметры сортировки" и "Кодовые страницы".
Функция Включенные столбцы Указание включенных столбцов не требуется для таблиц, оптимизированных для памяти. Все столбцы оптимизированной для памяти таблицы неявно включаются в каждый оптимизированный для памяти индекс.
Операция ИЗМЕНИТЬ ИНДЕКС Изменение индексов в таблицах, оптимизированных для памяти, не поддерживается. Вместо этого удалите таблицу и повторно создайте ее с помощью обновленной спецификации индекса.
Операция УДАЛИТЬ ИНДЕКС (DROP INDEX) Удаление индексов в таблицах, оптимизированных для памяти, не поддерживается. Вместо этого удалите таблицу и создайте ее заново с нужными индексами.
Опция индекса Параметр индекса Указанный параметр индекса не поддерживается индексами в таблицах, оптимизированных для памяти. Удалите параметр из спецификации индекса.

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

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

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

Естественно скомпилированные хранимые процедуры

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

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

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

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

-При создании внутренне скомпилированной хранимой процедуры вместо использования курсора используйте логику на основе наборов данных или WHILE цикл.
Функция Значения по умолчанию для неконстантных параметров При использовании значений по умолчанию с параметрами в скомпилированных в собственном коде хранимых процедур значения должны быть константами. Удалите все подстановочные символы из объявлений параметров.
Функция ВНЕШНИЙ Хранимые процедуры CLR не могут быть скомпилированы в собственном коде. Удалите предложение AS EXTERNAL или параметр NATIVE_COMPILATION из инструкции CREATE PROCEDURE.
Функция Нумерованные хранимые процедуры Скомпилированные хранимые процедуры в собственном коде не могут быть нумерованы. ; Удалите номер из инструкцииCREATE PROCEDURE.
Функция многострочные операторы INSERT ... VALUES Невозможно вставить несколько строк с помощью одного INSERT оператора в хранимой процедуре, скомпилированной в собственном коде. Создайте INSERT заявления для каждой строки.
Функция Общие табличные выражения (CTEs) Общие табличные выражения (CTE) не поддерживаются в нативно скомпилированных хранимых процедурах. Заново составить запрос.
Функция вложенный запрос Вложенные запросы (запросы, вложенные внутри другого запроса), не поддерживаются. Заново составить запрос.
Функция ВЫЧИСЛЕНИЕ Условие COMPUTE не поддерживается. Удалите его из запроса.
Функция SELECT INTO Выражение INTO не поддерживается с оператором SELECT. Перезапись запроса в виде INSERT INTOтаблицыSELECT.
Функция ВЫХОД Условие OUTPUT не поддерживается. Удалите его из запроса.
Функция неполный список столбцов вставки В INSERT инструкциях значения должны быть указаны для всех столбцов в таблице.
Функция Функция Встроенная функция не поддерживается в собственных скомпилированных хранимых процедурах. Удалите функцию из хранимой процедуры. Дополнительные сведения о поддерживаемых встроенных функциях см. в разделе "Скомпилированные в собственном коде хранимые процедуры".
Функция Случай Инструкция CASE не поддерживается в запросах внутри нативно скомпилированных хранимых процедур. Создайте запросы для каждого случая. Дополнительные сведения см. в разделе "Реализация инструкции CASE".
Функция определяемые пользователем функции Определяемые пользователем функции нельзя использовать в скомпилированных в собственном коде хранимых процедур. Удалите ссылку на функцию из определения процедуры.
Функция определяемые пользователем агрегаты Определяемые пользователем агрегатные функции нельзя использовать в скомпилированных в собственном коде хранимых процедур. Удалите ссылку на функцию из процедуры.
Функция Метаданные режима обзора Нативно скомпилированные хранимые процедуры не поддерживают метаданные просмотрового режима. Убедитесь, что параметр NO_BROWSETABLE сеанса имеет значение OFF.
Функция DELETE с использованием оператора FROM Предложение FROM не поддерживается для DELETE инструкций с источником таблицы в скомпилированных в собственном коде хранимых процедур.

DELETE предложение с FROM поддерживается, если оно используется для указания таблицы, из которой необходимо удалить данные.
Функция UPDATE с предложением FROM Предложение FROM не поддерживается для UPDATE инструкций в скомпилированных в собственном коде хранимых процедур.
Функция временные процедуры Временные хранимые процедуры не могут быть скомпилированы в собственном коде. Создайте постоянную нативно скомпилированную хранимую процедуру или временную интерпретированную Transact-SQL хранимую процедуру.
Уровень изоляции Чтение непроверенных данных Уровень изоляции READ UNCOMMITTED не поддерживается для нативно скомпилированных хранимых процедур. Используйте поддерживаемый уровень изоляции, например SNAPSHOT.
Уровень изоляции READ COMMITTED (Уровень изоляции транзакций) Уровень изоляции READ UNCOMMITTED не поддерживается для скомпилированных в собственном коде хранимых процедур. Используйте поддерживаемый уровень изоляции, например SNAPSHOT.
Функция временные таблицы Таблицы в tempdb нельзя использовать в нативно скомпилированных хранимых процедурах. Вместо этого используйте табличную переменную или таблицу, оптимизированную по памяти, с DURABILITY=SCHEMA_ONLY.
Функция МАРС Несколько активных результирующих наборов (MARS) не поддерживаются в собственном коде хранимых процедур. Эта ошибка также может указывать на использование связанного сервера. Связанный сервер может использовать MARS. Связанные серверы не поддерживаются нативно скомпилированными хранимыми процедурами. Вместо этого подключитесь непосредственно к серверу и базе данных, где размещаются скомпилированные в собственном коде хранимые процедуры.
Функция DTC Оптимизированные для памяти таблицы и скомпилированные в собственном коде хранимые процедуры нельзя получить из распределенных транзакций. Вместо этого используйте транзакции SQL.
Функция Сортировка, не соответствующая bin2 Для выполнения операций сравнения, сортировки и других манипуляций с символьными строками в изначально скомпилированных хранимых процедурах требуется использовать колляцию BIN2. Используйте предложение COLLATE или используйте столбцы и переменные с соответствующими параметрами сортировки. Дополнительные сведения см. в разделе "Параметры сортировки" и "Кодовые страницы".
Функция Обрезка строк символов при сортировке по SC. Строки символов с коллатерацией _SC используют кодировку UTF-16. Преобразование значения n(var)char в значение n(var)char с более короткой длиной включает усечение. Это не поддерживается для значений UTF-16 в собственно скомпилированных хранимых процедурах. Избегайте усечения строк UTF-16.
Функция ВЫПОЛНЕНИЕ С ПОМОЩЬЮ RECOMPILE Параметр WITH RECOMPILE не поддерживается для скомпилированных в собственном коде хранимых процедур.
Функция LEN и SUBSTRING с аргументом в сортировке SC Строки символов с параметрами сортировки _SC используют кодировку UTF-16. Встроенные функции LEN и SUBSTRING при использовании внутри скомпилированных в собственном коде хранимых процедур не поддерживают кодировку UTF-16. Используйте другую сортировку или избегайте использования этой функции.
Функция Выполнение из подключения выделенного администратора. Нативно скомпилированные хранимые процедуры не могут быть выполнены через выделенное подключение администратора (DAC). Вместо этого используйте регулярное подключение.
Операция ИЗМЕНИТЬ ПРОЦЕДУРУ Скомпилированные в родном коде хранимые процедуры нельзя изменить. Чтобы изменить определение процедуры, удалите и создайте хранимую процедуру.
Операция Точка сохранения Нативно скомпилированные хранимые процедуры нельзя вызывать из транзакций, имеющих активную точку сохранения. Удалите точку сохранения из транзакции.
Операция ИЗМЕНИТЬ АВТОРИЗАЦИЮ Изменение владельца существующей оптимизированной для памяти таблицы или скомпилированной в собственном коде хранимой процедуры не поддерживается. Удалите и вновь создайте таблицу или процедуру, чтобы изменить собственника.
Оператор OPENROWSET Этот оператор не поддерживается. Удалите OPENROWSET из хранимой процедуры нативной компиляции.
Оператор OPENQUERY Этот оператор не поддерживается. Удалите OPENQUERY из нативно скомпилированной хранимой процедуры.
Оператор OPENDATASOURCE Этот оператор не поддерживается. Удалите OPENDATASOURCE из скомпилированной в собственном коде хранимой процедуры.
Оператор OPENXML Этот оператор не поддерживается. Удалите OPENXML из нативно скомпилированной хранимой процедуры.
Оператор CONTAINSTABLE Этот оператор не поддерживается. Удалите CONTAINSTABLE из нативно скомпилированной хранимой процедуры.
Оператор FREETEXTTABLE Этот оператор не поддерживается. Удалите FREETEXTTABLE из созданной в нативном коде хранимой процедуры.
Функция Функции с табличным значением На функции с табличным значением нельзя ссылаться из скомпилированных в собственном коде хранимых процедур. Одним из возможных обходных решений этого ограничения является добавление логики в табличные функции значений в тело процедуры.
Оператор таблица изменений данных Этот оператор не поддерживается. Удалите CHANGETABLE из скомпилированной в собственном коде хранимой процедуры.
Оператор ПЕРЕХОД Этот оператор не поддерживается. Используйте другие процедурные конструкции, такие как WHILE.
Оператор EXECUTE, INSERT EXEC Вложенные хранимые процедуры, скомпилированные в собственном коде, не поддерживаются. Необходимые операции можно указать напрямую, в составе определения хранимой процедуры.
Оператор СМЕЩЕНИЕ Этот оператор не поддерживается. Удалите OFFSET из нативно скомпилированной хранимой процедуры.
Оператор СОЮЗ Этот оператор не поддерживается. Удалите UNION из нативно скомпилированной хранимой процедуры. Объединение нескольких результирующих наборов в один результирующий набор можно сделать с помощью табличной переменной.
Оператор ПЕРЕСЕЧЕНИЕ Этот оператор не поддерживается. Удалите INTERSECT из нативно скомпилированной хранимой процедуры. В некоторых случаях для получения того же результата можно использовать INNER JOIN.
Оператор КРОМЕ Этот оператор не поддерживается. Удалите EXCEPT из нативно скомпилированной хранимой процедуры.
Оператор ВНЕШНЕЕ СОЕДИНЕНИЕ Этот оператор не поддерживается. Удалите OUTER JOIN из нативно скомпилированной хранимой процедуры. Дополнительные сведения см. в разделе "Реализация внешнего соединения".
Оператор ПРИМЕНИТЬ Этот оператор не поддерживается. Удалите APPLY из нативно скомпилированной хранимой процедуры.
Оператор ПОВОРОТ Этот оператор не поддерживается. Удалите PIVOT из нативно скомпилированной хранимой процедуры.
Оператор UNPIVOT Этот оператор не поддерживается. Удалите UNPIVOT из нативно скомпилированной хранимой процедуры.
Оператор ИЛИ, IN Дизъюнкция (OR, IN) не поддерживается в условии WHERE запросов в нативно скомпилированных хранимых процедурах. Создайте запросы для каждого из вариантов.
Оператор СОДЕРЖИТ Этот оператор не поддерживается. Удалите CONTAINS из нативно скомпилированной хранимой процедуры.
Оператор Свободный текст Этот оператор не поддерживается. Удалите FREETEXT из нативно скомпилированной хранимой процедуры.
Оператор НЕ Этот оператор не поддерживается. Удалите NOT из нативно скомпилированной хранимой процедуры. В некоторых случаях NOT можно заменить неравенством. Например, NOT a=b можно заменить на a!=b.
Оператор TSEQUAL Этот оператор не поддерживается. Удалите TSEQUAL из нативно скомпилированной хранимой процедуры.
Оператор Нравится Этот оператор не поддерживается. Удалите LIKE из нативно скомпилированной хранимой процедуры.
Оператор СЛЕДУЮЩЕЕ ЗНАЧЕНИЕ ДЛЯ Нельзя использовать последовательности внутри нативно скомпилированных хранимых процедур. Получите значение с помощью интерпретированного Transact-SQL, а затем передайте его в скомпилированную в собственной среде выполнения хранимую процедуру. Для получения дополнительной информации см. Реализация IDENTITY в таблице Memory-Optimized.
Параметр SET Параметр Параметры SET нельзя изменить внутри скомпилированных в собственном коде хранимых процедур. Некоторые параметры можно задать с помощью инструкции BEGIN ATOMIC. Дополнительные сведения см. в разделе об атональных блоках в хранимых процедурах, скомпилированных в собственном коде.
Операнд Пример Таблицы (TABLESAMPLE) Этот оператор не поддерживается. Удалите TABLESAMPLE из нативно скомпилированной хранимой процедуры.
Вариант ПЕРЕКОМПИЛИРОВАТЬ Нативно скомпилированные хранимые процедуры компилируются во время создания. Чтобы повторно скомпилировать нативно скомпилированную хранимую процедуру, сначала удалите, а затем создайте её заново. Удалите RECOMPILE из определения процедуры.
Вариант ШИФРОВАНИЕ Этот параметр не поддерживается. Удалите ENCRYPTION из определения процедуры.
Вариант ДЛЯ РЕПЛИКАЦИИ Для репликации невозможно создать нативно скомпилированные хранимые процедуры. Удален FOR REPLICATION из определения процедуры.
Вариант Для XML Этот параметр не поддерживается. Удалите FOR XML из нативно скомпилированной хранимой процедуры.
Вариант ДЛЯ ПРОСМОТРА Этот параметр не поддерживается. Удалите FOR BROWSE из нативно скомпилированной хранимой процедуры.
Указание соединения Хэш, Слияние Скомпилированные в собственном коде хранимые процедуры поддерживают только соединения вложенных циклов. Хэш-соединения и слияние соединений не поддерживаются. Удалите подсказку соединения.
Подсказка запроса Указание запроса Указание запроса не находится внутри нативно скомпилированных хранимых процедур. Поддерживаемые подсказки запросов см. в разделе "Подсказки запросов" (Transact-SQL).
Вариант УНИКАЛЬНЫЙ Этот параметр не поддерживается. Удалите DISTINCT из запроса в хранимой процедуре, скомпилированной в нативный код.
Вариант ПРОЦЕНТ Этот параметр не поддерживается предложениями TOP . Удалите PERCENT из запроса в нативно скомпилированной хранимой процедуре.
Вариант С СВЯЗЯМИ Этот параметр не поддерживается с TOP условиями. Удалите WITH TIES из запроса в нативно скомпилированной хранимой процедуре.
Агрегатная функция Агрегатная функция Это предложение не поддерживается. Дополнительные сведения об агрегатных функциях в хранимых процедурах с нативной компиляцией можно найти в разделе Хранимые процедуры с нативной компиляцией.
Ранжирующая функция Ранжирование функции Функции ранжирования не поддерживаются в нативно скомпилированных хранимых процедурах. Удалите их из определения процедуры.
Функция Функция Эта функция не поддерживается. Удалите его из нативно скомпилированной хранимой процедуры.
Заявление Заявление Это заявление не поддерживается. Удалите это из нативно скомпилированной хранимой процедуры.
Функция MIN и MAX, используемые с двоичными и символьными строками Агрегатные функции MIN и MAX не могут использоваться для символьных и двоичных строковых значений внутри скомпилированных в собственном коде хранимых процедур.
Функция GROUP BY без агрегатной функции В нативно скомпилированных хранимых процедурах, при наличии предложения GROUP BY, в запросе также должна использоваться агрегатная функция в предложении SELECT или HAVING. Добавьте агрегатную функцию в запрос.
Функция ГРУППИРОВКА ПО ВСЕМ ALL нельзя использовать с предложениями GROUP BY в хранимых процедурах, скомпилированных в родном формате. Удалите ALL из предложения GROUP BY.
Функция GROUP BY () Группирование по пустому списку не поддерживается. Удалите предложение GROUP BY или включите столбцы в список группирования.
Функция свёртка ROLLUP нельзя использовать с GROUP BY условиями в нативно скомпилированных хранимых процедурах. Удалите ROLLUP из определения процедуры.
Функция КУБ CUBE нельзя использовать с GROUP BY условиями в сконфигурированных в нативный код хранимых процедурах. Удалите CUBE из определения процедуры.
Функция НАБОРЫ ГРУППИРОВОК GROUPING SETS нельзя использовать с GROUP BY условиями в нативно скомпилированных хранимых процедурах. Удалите GROUPING SETS из определения процедуры.
Функция BEGIN TRANSACTION (НАЧАТЬ ТРАНЗАКЦИЮ), COMMIT TRANSACTION (ЗАФИКСИРОВАТЬ ТРАНЗАКЦИЮ) и ROLLBACK TRANSACTION (ОТМЕНИТЬ ТРАНЗАКЦИЮ) Используйте блоки ATOMIC для управления транзакциями и обработкой ошибок. Дополнительные сведения см. в разделе "Атомарные блоки".
Функция Инлайн-объявления табличных переменных. Переменные таблицы должны ссылаться на явно определенные типы таблиц, оптимизированные для памяти. Необходимо создать оптимизированный для памяти тип таблицы и использовать этот тип для объявления переменной, а не указывать встроенный тип.
Функция sp_recompile Повторная компиляция собственным образом скомпилированных хранимых процедур не поддерживается. Удалите и создайте процедуру заново.
Функция ВЫПОЛНЕНИЕ ОТ ИМЕНИ ВЫЗЫВАЮЩЕГО Предложение EXECUTE AS является обязательным. Но EXECUTE AS CALLER не поддерживается. Используйте EXECUTE AS OWNER, EXECUTE ASпользователя или EXECUTE AS SELF.
Функция Таблицы на диске Доступ к таблицам, основанным на дисках, невозможно получить из нативно скомпилированных хранимых процедур. Удалите ссылки на дисковые таблицы из скомпилированных в собственном коде хранимых процедур. Кроме того, перенесите таблицы на основе дисков в оптимизированную память.
Функция Представления Доступ к представлениям невозможен из нативно скомпилированных хранимых процедур. Вместо представлений используйте базовые таблицы.
Функция Функции с табличным значением Доступ к табличным функциям невозможно получить из нативно скомпилированных хранимых процедур. Удалите ссылки на табличные функции из нативно скомпилированной хранимой процедуры.

Транзакции, которые обращаются к таблицам Memory-Optimized

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

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

См. также

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