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

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL DatabaseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database

Оптимизированные для памяти таблицы, скомпилированные хранимые процедуры и определяемые пользователем функции не поддерживают полную контактную зону Transact-SQLTransact-SQL, которая поддерживается дисковыми таблицами и интерпретируемыми хранимыми процедурами Transact-SQLTransact-SQL, а также определяемыми пользователем функциями.Memory-optimized tables, natively compiled stored procedures, and user-defined functions do not support the full Transact-SQLTransact-SQL surface area that is supported by disk-based tables, interpreted Transact-SQLTransact-SQL stored procedures, and user-defined functions. При попытке использовать одну из неподдерживаемых функций сервер возвращает ошибку.When attempting to use one of the unsupported features, the server returns an error.

Текст сообщения об ошибке указывает тип инструкции Transact-SQLTransact-SQL (функции, операции, параметра), а также имя функции или ключевое слово Transact-SQLTransact-SQL .The error message text mentions the type of Transact-SQLTransact-SQL statement (feature, operation, option, for example) and well as the name of the feature or Transact-SQLTransact-SQL keyword. Большинство неподдерживаемых функций возвращают ошибку 10794, а текст сообщения об ошибке указывает на неподдерживаемую функцию.Most unsupported features will return error 10794, with the error message text indicating the unsupported feature. В следующей таблице перечислены функции и ключевые слова Transact-SQLTransact-SQL , которые могут появиться в тексте сообщения об ошибке, а также действие по ее исправлению.The following tables list the Transact-SQLTransact-SQL features and keywords that can appear in the error message text, as well as the corrective action to resolve the error.

Дополнительные сведения о поддерживаемых функциях для оптимизированных для памяти таблиц и скомпилированных в собственном коде хранимых процедур см. на следующих ресурсах:For more information on supported features with memory-optimized tables and natively compiled stored procedures, see:

Базы данных, использующие OLTP в памятиDatabases That Use In-Memory OLTP

В следующей таблице перечислены неподдерживаемые функции Transact-SQLTransact-SQL , а также ключевые слова, которые могут присутствовать в тексте сообщения об ошибке, связанной с базой данных In-Memory OLTP.The following table lists the Transact-SQLTransact-SQL features that are not supported, and the keywords that can appear in the message text of an error involving an In-Memory OLTP database. В таблице также перечислены пути устранения ошибки.The table also lists the resolution for the error.

ТипType ИмяName РешениеResolution
ПараметрOption AUTO_CLOSEAUTO_CLOSE Параметр базы данных AUTO_CLOSE=ON не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.The database option AUTO_CLOSE=ON is not supported with databases that have a MEMORY_OPTIMIZED_DATA filegroup.
ПараметрOption ATTACH_REBUILD_LOGATTACH_REBUILD_LOG Параметр ATTACH_REBUILD_LOG инструкции CREATE базы данных не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.The CREATE database option ATTACH_REBUILD_LOG is not supported with databases that have a MEMORY_OPTIMIZED_DATA filegroup.
КомпонентFeature DATABASE SNAPSHOTDATABASE SNAPSHOT Создание моментальных снимков базы данных не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.Creating database snapshots is not supported with databases that have a MEMORY_OPTIMIZED_DATA filegroup.
КомпонентFeature Репликация с помощью метода синхронизации «database snapshot» или «database snapshot character»Replication using the sync_method 'database snapshot' or 'database snapshot character' Репликация с помощью метода синхронизации «database snapshot» или «database snapshot character» не поддерживается для баз данных, имеющих файловую группу MEMORY_OPTIMIZED_DATA.Replication using the sync_method 'database snapshot' or 'database snapshot character' is not supported with databases that have a MEMORY_OPTIMIZED_DATA filegroup.
КомпонентFeature DBCC CHECKDBDBCC CHECKDB

DBCC CHECKTABLEDBCC CHECKTABLE
DBCC CHECKDB пропускает оптимизированные для памяти таблицы в базе данных.DBCC CHECKDB skips the memory-optimized tables in the database.

DBCC CHECKTABLE для таблиц, оптимизированных для памяти, завершается ошибкой.DBCC CHECKTABLE will fail for memory-optimized tables.

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

В следующей таблице перечислены неподдерживаемые функции Transact-SQLTransact-SQL , а также ключевые слова, которые могут присутствовать в тексте сообщения об ошибке, связанной с оптимизированными для памяти таблицами.The following table lists the Transact-SQLTransact-SQL features that are not supported, and the keywords that can appear in the message text of an error involving a memory-optimized table. В таблице также перечислены пути устранения ошибки.The table also lists the resolution for the error.

ТипType ИмяName РешениеResolution
КомпонентFeature ONON Оптимизированные для памяти таблицы не могут размещаться в файловой группе или схеме секционирования.Memory-optimized tables cannot be placed on a filegroup or partition scheme. Удалите предложение ON из инструкции CREATE TABLE .Remove the ON clause from the CREATE TABLE statement.

Все оптимизированные для памяти таблицы сопоставляются с оптимизированной для памяти файловой группой.All memory optimized tables are mapped to memory-optimized filegroup.
Тип данныхData type Название типа данныхData type name Указанный тип данных не поддерживается.The indicated data type is not supported. Замените этот тип одним из поддерживаемых типов данных.Replace the type with one of the supported data types. Дополнительные сведения см. в статье Поддерживаемые типы данных для выполняющейся в памяти OLTP.For more information, see Supported Data Types for In-Memory OLTP.
КомпонентFeature Вычисляемые столбцыComputed columns Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x) и SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and SQL Server 2016 (13.x);SQL Server 2016 (13.x)
Вычисляемые столбцы не поддерживаются для оптимизированных для памяти таблиц.Computed columns are not supported for memory-optimized tables. Удалите вычисляемые столбцы из инструкции CREATE TABLE .Remove the computed columns from the CREATE TABLE statement.

База данных SQL AzureAzure SQL Database и SQL Server начиная с версии SQL Server 2017 (14.x);SQL Server 2017 (14.x) поддерживают вычисляемые столбцы в оптимизированных для памяти таблицах и индексах.and SQL Server starting SQL Server 2017 (14.x);SQL Server 2017 (14.x) do support computed columns in memory-optimized tables and indexes.
КомпонентFeature РепликацияReplication Репликация не поддерживается для таблиц, оптимизированных для памяти.Replication is not supported with memory-optimized tables.
КомпонентFeature FILESTREAMFILESTREAM Хранилище FILESTREAM не поддерживает столбцы оптимизированных для памяти таблиц.FILESTREAM storage is not supported columns of memory-optimized tables. Удалите ключевое слово FILESTREAM из определения столбца.Remove the FILESTREAM keyword from the column definition.
КомпонентFeature SPARSESPARSE Столбцы оптимизированных для памяти таблиц не могут быть определены как SPARSE.Columns of memory-optimized tables cannot be defined as SPARSE. Удалите ключевое слово SPARSE из определения столбца.Remove the SPARSE keyword from the column definition.
КомпонентFeature ROWGUIDCOLROWGUIDCOL Параметр ROWGUIDCOL не поддерживается для столбцов таблиц, оптимизированных для памяти.The option ROWGUIDCOL is not supported for columns of memory-optimized tables. Удалите ключевое слово ROWGUIDCOL из определения столбца.Remove the ROWGUIDCOL keyword from the column definition.
КомпонентFeature FOREIGN KEYFOREIGN KEY Область применения: База данных SQL AzureAzure SQL Database и SQL Server, начиная с версии SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: База данных SQL AzureAzure SQL Database and SQL Server starting SQL Server 2016 (13.x);SQL Server 2016 (13.x)
Для таблиц, оптимизированных для памяти, ограничения FOREIGN KEY поддерживаются только для внешних ключей, ссылающихся на первичные ключи других таблиц, оптимизированных для памяти.For memory-optimized tables, FOREIGN KEY constraints are only supported for foreign keys referencing primary keys of other memory-optimized tables. Удалите ограничение из определения таблицы, если внешний ключ ссылается на уникальное ограничение.Remove the constraint from the table definition if the foreign key references a unique constraint.

В SQL Server 2014 (12.x)SQL Server 2014 (12.x) ограничения FOREIGN KEY не поддерживаются в оптимизированных для памяти таблицах.In SQL Server 2014 (12.x)SQL Server 2014 (12.x), FOREIGN KEY constraints are not supported with memory-optimized tables.
КомпонентFeature кластеризованный индексclustered index Укажите некластеризованный индекс.Specify a nonclustered index. В случае использования индекса первичного ключа необходимо указать PRIMARY KEY NONCLUSTERED.In the case of a primary key index be sure to specify PRIMARY KEY NONCLUSTERED.
КомпонентFeature DDL в транзакцияхDDL inside transactions Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры нельзя создавать или удалять в контексте пользовательской транзакции.Memory-optimized tables and natively compiled stored procedures cannot be created or dropped in the context of a user transaction. Не начинайте транзакцию до выполнения инструкции CREATE или DROP и проверьте, чтобы параметр сеанса IMPLICIT_TRANSACTIONS имел значение OFF.Do not start a transaction and ensure the session setting IMPLICIT_TRANSACTIONS is OFF before executing the CREATE or DROP statement.
КомпонентFeature DDL, триггерыDDL triggers Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры нельзя создать или удалить, если есть триггер сервера или базы данных для этой DDL-операции.Memory-optimized tables and natively compiled stored procedures cannot be created or dropped if there is a server or database trigger for that DDL operation. Удалите триггеры сервера и базы данных для операций CREATE/DROP TABLE и CREATE/DROP PROCEDURE.Remove the server and database triggers on CREATE/DROP TABLE and CREATE/DROP PROCEDURE.
КомпонентFeature EVENT NOTIFICATIONEVENT NOTIFICATION Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры нельзя создать или удалить, если есть уведомление о событии сервера или базы данных для этой DDL-операции.Memory-optimized tables and natively compiled stored procedures cannot be created or dropped if there is a server or database event notification for that DDL operation. Удалите уведомления о событиях сервера и базы данных в CREATE TABLE или DROP TABLE, а также в CREATE PROCEDURE или DROP PROCEDURE.Remove the server and database event notifications on CREATE TABLE or DROP TABLE and CREATE PROCEDURE or DROP PROCEDURE.
КомпонентFeature FileTableFileTable Оптимизированные для памяти таблицы не могут быть созданы как файловые таблицы.Memory-optimized tables cannot be created as file tables. Удалите аргумент AS FileTable из инструкции CREATE TABLE .Remove the argument AS FileTable from the CREATE TABLE statement
ОперацияOperation Обновление столбцов первичного ключаUpdate of primary key columns Столбцы первичного ключа в оптимизированных для памяти таблицах и табличных типах нельзя обновить.Primary key columns in memory-optimized tables and table types cannot be updated. Если первичный ключ должен быть обновлен, удалите старую строку и вставьте новую строку с обновленным первичным ключом.If the primary key needs to be updated, delete the old row and insert the new row with the updated primary key.
ОперацияOperation CREATE INDEXCREATE INDEX Индексы в оптимизированных для памяти таблицах нужно указывать в инструкции CREATE TABLE или ALTER TABLE .Indexes on memory-optimized tables must be specified inline with the CREATE TABLE statement, or with the ALTER TABLE statement.
ОперацияOperation CREATE FULLTEXT INDEXCREATE FULLTEXT INDEX Полнотекстовые индексы не поддерживаются с оптимизированными для памяти таблицами.Fulltext indexes are not supported for memory-optimized tables.
ОперацияOperation изменение схемыschema change Оптимизированные для памяти таблицы и скомпилированные в машинный код хранимые процедуры не поддерживают некоторые изменения схемы.Memory-optimized tables and natively compiled stored procedures do not support certain schema changes:
База данных SQL AzureAzure SQL Database и SQL Server начиная с версии SQL Server 2017 (14.x);SQL Server 2017 (14.x): операции ALTER TABLE, ALTER PROCEDURE и sp_rename поддерживаются.and SQL Server starting SQL Server 2017 (14.x);SQL Server 2017 (14.x): ALTER TABLE, ALTER PROCEDURE, and sp_rename operations are supported. Другие изменения схемы, например добавление расширенных свойств, не поддерживаются.Other schema changes, for example adding extended properties, are not supported.

SQL Server 2016 (13.x);SQL Server 2016 (13.x): операции ALTER TABLE и ALTER PROCEDURE поддерживаются.: ALTER TABLE and ALTER PROCEDURE operations are supported. Другие изменения схемы, включая sp_rename, не поддерживаются.Other schema changes, including sp_rename, are not supported.

SQL Server 2014 (12.x)SQL Server 2014 (12.x): изменения схемы не поддерживаются.: schema changes are not supported. Чтобы изменить определение оптимизированной для памяти таблицы или скомпилированной в машинный код хранимой процедуры, сначала удалите объект, а затем создайте его повторно с требуемым определением.To change the definition of a memory-optimized table or natively compiled stored procedure, first drop the object and then recreate it with the desired definittion.
ОперацияOperation TRUNCATE TABLETRUNCATE TABLE Операция TRUNCATE не поддерживается для оптимизированных для памяти таблиц.The TRUNCATE operation is not supported for memory-optimized tables. Удалить все строки из таблицы можно с помощью DELETE FROMтаблица . Или удалите таблицу и создайте ее повторно.To remove all rows from a table, delete all rows using DELETE FROMtable or drop and recreate the table.
ОперацияOperation ALTER AUTHORIZATIONALTER AUTHORIZATION Изменение владельца существующей оптимизированной для памяти таблицы или скомпилированной хранимой процедуры не поддерживается.Changing the owner of an existing memory-optimized table or natively compiled stored procedure is not supported. Для изменения владельца удалите и заново создайте таблицу или процедуру.Drop and recreate the table or procedure to change ownership.
ОперацияOperation ALTER SCHEMAALTER SCHEMA Передача существующей таблицы или скомпилированной в машинный код хранимой процедуры в другую схему не поддерживается.Transferring an existing table or natively compiled stored procedure to another schema is not supported. Чтобы передать объект из одной схемы в другую, удалите его, а затем создайте повторно.Drop and recreate the object to transfer between schemas.
ОперацияOperation DBCC CHECKTABLEDBCC CHECKTABLE Операции DBCC CHECKTABLE не поддерживаются для таблиц, оптимизированных для памяти.DBCC CHECKTABLE are not supported with memory-optimized tables. Чтобы проверить целостность файлов контрольных точек на диске, выполните резервное копирование файловой группы MEMORY_OPTIMIZED_DATA.To verify the integrity of the on-disk checkpoint files, perform a backup of the MEMORY_OPTIMIZED_DATA filegroup.
КомпонентFeature ANSI_PADDING OFFANSI_PADDING OFF Параметр сеанса ANSI_PADDING должен быть установлен в ON при создании оптимизированной для памяти таблицы или скомпилированной хранимой процедуры.The session option ANSI_PADDING must be ON when creating memory-optimized tables or natively compiled stored procedures. Выполните SET ANSI_PADDING ON перед выполнением инструкции CREATE.Execute SET ANSI_PADDING ON before running the CREATE statement.
ПараметрOption DATA_COMPRESSIONDATA_COMPRESSION Сжатие данных не поддерживается для оптимизированных для памяти таблиц.Data compression is not supported for memory-optimized tables. Удалите выбранный параметр из определения таблицы.Remove the option from the table definition.
КомпонентFeature DTCDTC Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры недоступны из распределенных транзакций.Memory-optimized tables and natively compiled stored procedures cannot be accessed from distributed transactions. Вместо этого используйте транзакции SQL.Use SQL transactions instead.
ОперацияOperation Оптимизированные для памяти таблицы в качестве назначения MERGEMemory-optimized tables as target of MERGE Оптимизированные для памяти таблицы не могут быть целью операции MERGE .Memory-optimized tables cannot be the target of a MERGE operation. Вместо этого используйте инструкции INSERT, UPDATE и DELETE.Use INSERT, UPDATE, and DELETE statements instead.

Индексы для оптимизированных для памяти таблицIndexes on Memory-Optimized Tables

В следующей таблице перечислены функции и ключевые слова Transact-SQLTransact-SQL , которые могут присутствовать в тексте ошибки, связанной с индексом оптимизированной для памяти таблицы, а также действия по исправлению данной ошибки.The following table lists the Transact-SQLTransact-SQL features and keywords that can appear in the message text of an error involving an index on a memory-optimized table, as well as the corrective action to resolve the error.

ТипType ИмяName РешениеResolution
КомпонентFeature Фильтруемый индексFiltered index Отфильтрованные индексы для таблиц, оптимизированных для памяти, не поддерживаются.Filtered indexes are not supported with memory-optimized tables. Пропустите предложение WHERE из определения индекса.Omit the WHERE clause from the index specification.
КомпонентFeature Включенные столбцыIncluded columns Указывать включенные столбцы в отношении оптимизированных для памяти таблиц не требуется.Specifying included columns is not necessary for memory-optimized tables. Все столбцы оптимизированной для памяти таблицы неявно включаются в каждый оптимизированный для памяти индекс.All columns of the memory-optimized table are implicitly included in every memory-optimized index.
ОперацияOperation DROP INDEXDROP INDEX Удаление индексов к таблицам, оптимизированным для памяти, не поддерживается.Dropping indexes on memory-optimized tables is not supported. Вы можете удалить индексы с помощью инструкции ALTER TABLE.You can delete indexes using ALTER TABLE.

Дополнительные сведения см. в статье Изменение таблиц с оптимизацией для памяти.For more information, see Altering Memory-Optimized Tables.
Параметр индексаIndex option Параметр индексаIndex option Поддерживается только один вариант индекса — BUCKET_COUNT для индексов HASH.Only one index option is supported - BUCKET_COUNT for HASH indexes.

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

В следующей таблице перечислены функции и ключевые слова Transact-SQLTransact-SQL , которые могут присутствовать в тексте ошибки, связанной с некластеризованным хэш-индексом, а также действия по исправлению данной ошибки.The following table lists the Transact-SQLTransact-SQL features and keywords that can appear in the message text of an error involving a nonclustered hash index, as well as the corrective action to resolve the error.

ТипType ИмяName РешениеResolution
ПараметрOption ASC/DESCASC/DESC Некластеризованные хэш-индексы не упорядочиваются.Nonclustered hash indexes are not ordered. Удалите ключевые слова ASC и DESC из спецификации ключа индекса.Remove the keywords ASC and DESC from the index key specification.

Скомпилированные в собственном коде хранимые процедуры и определяемые пользователем функцииNatively Compiled Stored Procedures and User-Defined Functions

В следующей таблице перечислены функции Transact-SQLTransact-SQL и ключевые слова, которые могут присутствовать в тексте ошибки, связанной со скомпилированными хранимыми процедурами и определяемыми пользователем функциями, а также действия по исправлению такой ошибки.The following table lists the Transact-SQLTransact-SQL features and keywords that can appear in the message text of an error involving natively compiled stored procedures and user-defined functions, as well as the corrective action to resolve the error.

ТипType КомпонентFeature РешениеResolution
КомпонентFeature Встроенные табличные переменныеInline table variables Табличные типы нельзя объявлять как встроенные с объявлениями переменных.Table types cannot be declared inline with variable declarations. Табличные типы должны быть объявлены явно с помощью инструкции CREATE TYPE .Table types must be declared explicitly using a CREATE TYPE statement.
КомпонентFeature КурсорыCursors Курсоры не поддерживаются в пределах хранимых процедур, скомпилированных в собственном коде.Cursors are not supported on or in natively compiled stored procedures.

При выполнении процедуры из клиента используйте RPC вместо API курсора.When executing the procedure from the client, use RPC rather than the cursor API. Что касается ODBC, то избегайте инструкции Transact-SQLTransact-SQL . EXECUTE.With ODBC, avoid the Transact-SQLTransact-SQL statement EXECUTE, instead specify the name of the procedure directly.

При выполнении процедуры из пакета Transact-SQLTransact-SQL или другой хранимой процедуры следует избегать использования курсора вместе со скомпилированной хранимой процедурой.When executing the procedure from a Transact-SQLTransact-SQL batch or another stored procedure, avoid using a cursor with the natively compiled stored procedure.

При создании скомпилированной хранимой процедуры не используйте курсор, а применяйте логику, основанную на наборах, или цикл WHILE .When creating a natively compiled stored procedure, rather than using a cursor, use set-based logic or a WHILE loop.
КомпонентFeature Неконстантные значения по умолчанию для параметровNon-constant parameter defaults При использовании значений по умолчанию с параметрами для скомпилированных хранимых процедур эти значения должны быть константами.When using default values with parameters on natively compiled stored procedures, the values must be constants. Удалите все шаблоны из определений параметров.Remove any wildcards from the parameter declarations.
КомпонентFeature EXTERNALEXTERNAL Хранимые процедуры CLR нельзя скомпилировать в собственном коде.CLR stored procedures cannot be natively compiled. Удалите предложение AS EXTERNAL или параметр NATIVE_COMPILATION в инструкции CREATE PROCEDURE.Either remove the AS EXTERNAL clause or the NATIVE_COMPILATION option from the CREATE PROCEDURE statement.
КомпонентFeature Нумерованные хранимые процедурыNumbered stored procedures Изначально скомпилированные хранимые процедуры нельзя пронумеровать.Natively compiled stored procedures cannot be numbered. Удаление ; номер из инструкции CREATE PROCEDURE .Remove the ;number from the CREATE PROCEDURE statement.
КомпонентFeature Многостроковые инструкции INSERT ... INSERT … VALUESmulti-row INSERT ... VALUES statements Нельзя вставить несколько строк с использованием одной и той же инструкции INSERT в скомпилированной хранимой процедуре.Cannot insert multiple rows using the same INSERT statement in a natively compiled stored procedure. Создайте инструкции INSERT для каждой строки.Create INSERT statements for each row.
КомпонентFeature Обобщенные табличные выраженияCommon Table Expressions (CTEs) Обобщенные табличные выражения (CTE) не поддерживаются в скомпилированных хранимых процедурах.Common table expressions (CTE) are not supported in natively compiled stored procedures. Заново составить запрос.Rewrite the query.
КомпонентFeature COMPUTECOMPUTE Предложение COMPUTE не поддерживается.The COMPUTE clause is not supported. Удалите его из запроса.Remove it from the query.
КомпонентFeature SELECT INTOSELECT INTO Предложение INTO в инструкции SELECT не поддерживается.The INTO clause is not supported with the SELECT statement. Перепишите запрос в следующей форме: INSERT INTO Таблица SELECT.Rewrite the query as INSERT INTO Table SELECT.
КомпонентFeature неполный список вставки столбцовincomplete insert column list В общем случае в инструкциях INSERT необходимо указывать значения для всех столбцов таблицы.In general, in INSERT statements values must be specified for all columns in the table.

Тем не менее мы поддерживаем ограничения DEFAULT и столбцы IDENTITY(1,1) в оптимизированных для памяти таблицах.However, we do support DEFAULT constraints and IDENTITY(1,1) columns on memory optimized tables. Эти столбцы могут присутствовать, но если должны присутствовать столбцы IDENTITY, они исключаются из списка столбцов INSERT.These columns can be, and in the case of IDENTITY columns must be, omitted from the INSERT column list.
КомпонентFeature КомпонентFunction Некоторые встроенные функции не поддерживаются в скомпилированных в собственном коде хранимых процедурах.Some built-in functions are not supported in natively compiled stored procedures. Удалите такую функцию из хранимой процедуры.Remove the rejected function from the stored procedure. Дополнительные сведения о поддерживаемых встроенных функциях см. в следующих источниках:For more information about supported built-in functions, see
Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQLSupported Features for Natively Compiled T-SQL Modules, or
Скомпилированные в собственном коде хранимые процедурыNatively Compiled Stored Procedures.
КомпонентFeature CASECASE Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x) и SQL Server, начиная с версии SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and SQL Server starting SQL Server 2016 (13.x);SQL Server 2016 (13.x)
Выражения CASE не поддерживаются в запросах внутри скомпилированных в машинном коде хранимых процедур.CASE expressions are not supported in queries inside natively compiled stored procedures. Создайте запросы для каждого случая.Create queries for each case. Дополнительные сведения см. в статье Реализация выражения CASE в скомпилированной в собственном коде хранимой процедуре.For more information, see Implementing a CASE Expression in a Natively Compiled Stored Procedure.

База данных SQL AzureAzure SQL Database и SQL Server начиная с версии SQL Server 2017 (14.x);SQL Server 2017 (14.x) поддерживают выражения CASE.and SQL Server starting SQL Server 2017 (14.x);SQL Server 2017 (14.x) do support CASE expressions.
КомпонентFeature INSERT EXECUTEINSERT EXECUTE Удаление ссылки.Remove the reference.
КомпонентFeature EXECUTEEXECUTE Поддерживается только скомпилированными в собственном коде хранимыми процедурами и определяемыми пользователем функциями.Supported only to execute natively compiled stored procedures and user-defined functions.
КомпонентFeature пользовательские агрегатыuser-defined aggregates Определяемые пользователем агрегатные функции нельзя использовать в скомпилированных хранимых процедурах.User-defined aggregate functions cannot be used in natively compiled stored procedures. Удалите ссылку на функцию из процедуры.Remove the reference to the function from the procedure.
КомпонентFeature режим просмотра метаданныхbrowse mode metadata Скомпилированные хранимые процедуры не поддерживают режима обзора метаданных.Natively compiled stored procedures do not support browse mode metadata. Убедитесь, что параметр сеанса NO_BROWSETABLE установлен в значение OFF.Make sure the session option NO_BROWSETABLE is set to OFF.
КомпонентFeature Инструкции DELETE с предложением FROMDELETE with FROM clause В хранимых процедурах, скомпилированных в собственном коде, предложение FROM в инструкциях DELETE с таблицей-источником не поддерживается.The FROM clause is not supported for DELETE statements with a table source in natively compiled stored procedures.

DELETE с предложением FROM поддерживается только в том случае, если она используется для указания таблицы, из которой производится удаление.DELETE with the FROM clause is supported when it is used to indicate the table to delete from.
КомпонентFeature UPDATE с предложением FROMUPDATE with FROM clause Предложение FROM не поддерживается в инструкциях UPDATE скомпилированных хранимых процедур.The FROM clause is not supported for UPDATE statements in natively compiled stored procedures.
КомпонентFeature временные процедурыtemporary procedures Временные хранимые процедуры нельзя скомпилировать в собственном коде.Temporary stored procedures cannot be natively compiled. Создайте долговременную скомпилированную хранимую процедуру или временную интерпретируемую хранимую процедуру Transact-SQLTransact-SQL .Either create a permanent natively compiled stored procedure or a temporary interpreted Transact-SQLTransact-SQL stored procedure.
Уровень изоляцииIsolation level READ UNCOMMITTEDREAD UNCOMMITTED Уровень изоляции READ UNCOMMITTED не поддерживается для скомпилированных хранимых процедур.The isolation level READ UNCOMMITTED is not supported for natively compiled stored procedures. Используйте поддерживаемый уровень изоляции, например SNAPSHOT.Use a supported isolation level, such as SNAPSHOT.
Уровень изоляцииIsolation level READ COMMITTEDREAD COMMITTED Уровень изоляции READ COMMITTED не поддерживается для скомпилированных в собственном коде хранимых процедур.The isolation level READ COMMITTED is not supported for natively compiled stored procedures. Используйте поддерживаемый уровень изоляции, например SNAPSHOT.Use a supported isolation level, such as SNAPSHOT.
КомпонентFeature временные таблицыtemporary tables Таблицы в базе данных tempdb нельзя использовать в скомпилированных хранимых процедурах.Tables in tempdb cannot be used in natively compiled stored procedures. Вместо этого используйте табличную переменную или оптимизированную для памяти таблицу с DURABILITY=SCHEMA_ONLY.Instead, use a table variable or a memory-optimized table with DURABILITY=SCHEMA_ONLY.
КомпонентFeature DTCDTC Оптимизированные для памяти таблицы и скомпилированные хранимые процедуры недоступны из распределенных транзакций.Memory-optimized tables and natively compiled stored procedures cannot be accessed from distributed transactions. Вместо этого используйте транзакции SQL.Use SQL transactions instead.
КомпонентFeature EXECUTE WITH RECOMPILEEXECUTE WITH RECOMPILE Параметр WITH RECOMPILE не поддерживается для скомпилированных хранимых процедур.The option WITH RECOMPILE is not supported for natively compiled stored procedures.
КомпонентFeature Выполнение из выделенного административного соединения.Execution from the dedicated administrator connection. Скомпилированные хранимые процедуры не могут быть выполнены из выделенного административного соединения (DAC).Natively compiled stored procedures cannot be executed from the dedicated admin connection (DAC). Вместо этого используйте обычное соединение.Use a regular connection instead.
ОперацияOperation точка сохраненияsavepoint Скомпилированные хранимые процедуры не могут быть вызваны из транзакции с активной точкой сохранения.Natively compiled stored procedures cannot be invoked from transactions that have an active savepoint. Удалите точку сохранения из транзакции.Remove the savepoint from the transaction.
ОперацияOperation ALTER AUTHORIZATIONALTER AUTHORIZATION Изменение владельца существующей оптимизированной для памяти таблицы или скомпилированной хранимой процедуры не поддерживается.Changing the owner of an existing memory-optimized table or natively compiled stored procedure is not supported. Для изменения владельца удалите и заново создайте таблицу или процедуру.Drop and recreate the table or procedure to change ownership.
ОператорOperator OPENROWSETOPENROWSET Данный оператор не поддерживается.This operator is not supported. Удалите OPENROWSET из скомпилированной хранимой процедуры.Remove OPENROWSET from the natively compiled stored procedure.
ОператорOperator OPENQUERYOPENQUERY Данный оператор не поддерживается.This operator is not supported. Удалите OPENQUERY из скомпилированной хранимой процедуры.Remove OPENQUERY from the natively compiled stored procedure.
ОператорOperator OPENDATASOURCEOPENDATASOURCE Данный оператор не поддерживается.This operator is not supported. Удалите OPENDATASOURCE из скомпилированной хранимой процедуры.Remove OPENDATASOURCE from the natively compiled stored procedure.
ОператорOperator OPENXMLOPENXML Данный оператор не поддерживается.This operator is not supported. Удалите OPENXML из скомпилированной хранимой процедуры.Remove OPENXML from the natively compiled stored procedure.
ОператорOperator CONTAINSTABLECONTAINSTABLE Данный оператор не поддерживается.This operator is not supported. Удалите CONTAINSTABLE из скомпилированной хранимой процедуры.Remove CONTAINSTABLE from the natively compiled stored procedure.
ОператорOperator FREETEXTTABLEFREETEXTTABLE Данный оператор не поддерживается.This operator is not supported. Удалите FREETEXTTABLE из скомпилированной хранимой процедуры.Remove FREETEXTTABLE from the natively compiled stored procedure.
КомпонентFeature функции с табличным значениемtable-valued functions К функциям с табличным значением не может производиться обращение из скомпилированных хранимых процедур.Table-valued functions cannot be referenced from natively compiled stored procedures. Одно возможное решение для этого ограничения — добавление логики для функций с табличным значением в текст процедуры.One possible workaround for this restriction is to add the logic in the table-valued functions to the procedure body.
ОператорOperator CHANGETABLECHANGETABLE Данный оператор не поддерживается.This operator is not supported. Удалите CHANGETABLE из скомпилированной хранимой процедуры.Remove CHANGETABLE from the natively compiled stored procedure.
ОператорOperator GOTOGOTO Данный оператор не поддерживается.This operator is not supported. Используйте другие конструкции, такие как WHILE.Use other procedural constructs such as WHILE.
ОператорOperator OFFSETOFFSET Данный оператор не поддерживается.This operator is not supported. Удалите OFFSET из скомпилированной хранимой процедуры.Remove OFFSET from the natively compiled stored procedure.
ОператорOperator INTERSECTINTERSECT Данный оператор не поддерживается.This operator is not supported. Удалите INTERSECT из скомпилированной хранимой процедуры.Remove INTERSECT from the natively compiled stored procedure. В некоторых случаях можно использовать INNER JOIN, чтобы получить тот же результат.In some cases an INNER JOIN can be used to obtain the same result.
ОператорOperator EXCEPTEXCEPT Данный оператор не поддерживается.This operator is not supported. Удалите EXCEPT из скомпилированной хранимой процедуры.Remove EXCEPT from the natively compiled stored procedure.
ОператорOperator APPLYAPPLY Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x) и SQL Server, начиная с версии SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and SQL Server starting SQL Server 2016 (13.x);SQL Server 2016 (13.x)
Данный оператор не поддерживается.This operator is not supported. Удалите APPLY из скомпилированной хранимой процедуры.Remove APPLY from the natively compiled stored procedure.

База данных SQL AzureAzure SQL Database и SQL Server начиная с версии SQL Server 2017 (14.x);SQL Server 2017 (14.x) поддерживают оператор APPLY в скомпилированных в машинный код модулях.and SQL Server starting SQL Server 2017 (14.x);SQL Server 2017 (14.x) do support the APPLY operator in natively compiled modules.
ОператорOperator PIVOTPIVOT Данный оператор не поддерживается.This operator is not supported. Удалите PIVOT из скомпилированной хранимой процедуры.Remove PIVOT from the natively compiled stored procedure.
ОператорOperator UNPIVOTUNPIVOT Данный оператор не поддерживается.This operator is not supported. Удалите UNPIVOT из скомпилированной хранимой процедуры.Remove UNPIVOT from the natively compiled stored procedure.
ОператорOperator CONTAINSCONTAINS Данный оператор не поддерживается.This operator is not supported. Удалите CONTAINS из скомпилированной хранимой процедуры.Remove CONTAINS from the natively compiled stored procedure.
ОператорOperator FREETEXTFREETEXT Данный оператор не поддерживается.This operator is not supported. Удалите FREETEXT из скомпилированной хранимой процедуры.Remove FREETEXT from the natively compiled stored procedure.
ОператорOperator TSEQUALTSEQUAL Данный оператор не поддерживается.This operator is not supported. Удалите TSEQUAL из скомпилированной хранимой процедуры.Remove TSEQUAL from the natively compiled stored procedure.
ОператорOperator LIKELIKE Данный оператор не поддерживается.This operator is not supported. Удалите LIKE из скомпилированной хранимой процедуры.Remove LIKE from the natively compiled stored procedure.
ОператорOperator NEXT VALUE FORNEXT VALUE FOR Из скомпилированных хранимых процедур нельзя обращаться к последовательностям.Sequences cannot be referenced inside natively compiled stored procedures. Получите значение, используя интерпретируемый код Transact-SQLTransact-SQL, а затем передайте его в скомпилированную хранимую процедуру.Obtain the value using interpreted Transact-SQLTransact-SQL, and then pass it into the natively compiled stored procedure. Дополнительные сведения см. в статье Реализация IDENTITY в таблице, оптимизированной для памяти.For more information, see Implementing IDENTITY in a Memory-Optimized Table.
Параметр SETSet option Параметрoption Параметры SET нельзя изменить внутри скомпилированных хранимых процедур.SET options cannot be changed inside natively compiled stored procedures. Некоторые параметры можно задать с помощью инструкции BEGIN ATOMIC.Certain options can be set with the BEGIN ATOMIC statement. Дополнительные сведения см. в разделе об атомарных блоках в статье Natively Compiled Stored Procedures.For more information, see the section on atonic blocks in Natively Compiled Stored Procedures.
ОперандOperand TABLESAMPLETABLESAMPLE Данный оператор не поддерживается.This operator is not supported. Удалите TABLESAMPLE из скомпилированной хранимой процедуры.Remove TABLESAMPLE from the natively compiled stored procedure.
ПараметрOption RECOMPILERECOMPILE Компилируемые хранимые процедуры компилируются во время создания.Natively compiled stored procedures are compiled at create time. Удалите RECOMPILE из определения процедуры.Remove RECOMPILE from the procedure definition.

Вы можете выполнить sp_recompile для скомпилированной в собственном коде хранимой процедуры, что приведет к повторной компиляции при следующем выполнении.You can execute sp_recompile on a natively compiled stored procedure, which causes it to recompile on the next execution.
ПараметрOption ENCRYPTIONENCRYPTION Этот параметр не поддерживается.This option is not supported. Удалите ENCRYPTION из определения процедуры.Remove ENCRYPTION from the procedure definition.
ПараметрOption FOR REPLICATIONFOR REPLICATION Скомпилированные хранимые процедуры не могут быть созданы во время репликации.Natively compiled stored procedures cannot be created for replication. Удалите FOR REPLICATION из определения процедуры.Removed FOR REPLICATION from the procedure definition.
ПараметрOption FOR XMLFOR XML Этот параметр не поддерживается.This option is not supported. Удалите FOR XML из скомпилированной хранимой процедуры.Remove FOR XML from the natively compiled stored procedure.
ПараметрOption FOR BROWSEFOR BROWSE Этот параметр не поддерживается.This option is not supported. Удалите FOR BROWSE из скомпилированной хранимой процедуры.Remove FOR BROWSE from the natively compiled stored procedure.
Указание соединенияJoin hint HASH, MERGEHASH, MERGE Скомпилированные хранимые процедуры поддерживают только соединения во вложенных циклах.Natively compiled stored procedures only support nested-loops joins. Соединения слиянием и хэша не поддерживаются.Hash and merge joins are not supported. Удалите указание соединения.Remove the join hint.
Указание запросаQuery hint Указание запросаQuery hint Данное указание запроса не находится внутри скомпилированных хранимых процедур.This query hint is not inside natively compiled stored procedures. Поддерживаемые указания запросов см. в статье Указания запросов (Transact-SQL).For supported query hints see Query Hints (Transact-SQL).
ПараметрOption PERCENTPERCENT Этот параметр не поддерживается с предложениями TOP .This option is not supported with TOP clauses. Удалите PERCENT из запроса в скомпилированной хранимой процедуре.Remove PERCENT from the query in the natively compiled stored procedure.
ПараметрOption WITH TIESWITH TIES Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x) и SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and SQL Server 2016 (13.x);SQL Server 2016 (13.x)
Этот параметр не поддерживается с предложениями TOP .This option is not supported with TOP clauses. Удалите WITH TIES из запроса в скомпилированной хранимой процедуре.Remove WITH TIES from the query in the natively compiled stored procedure.

База данных SQL AzureAzure SQL Database и SQL Server начиная с версии SQL Server 2017 (14.x);SQL Server 2017 (14.x) поддерживают TOP WITH TIES.and SQL Server starting SQL Server 2017 (14.x);SQL Server 2017 (14.x) do support TOP WITH TIES.
Агрегатная функцияAggregate function Агрегатная функцияAggregate function Поддерживаются не все агрегатные функции.Not all aggregate functions are supported. Дополнительные сведения об агрегатных функциях, поддерживаемых в скомпилированных в машинный код модулях T-SQL, см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.For more information about supported aggregate functions in natively compiled T-SQL modules, see Supported Features for Natively Compiled T-SQL Modules.
Ранжирующая функцияRanking function Ранжирующая функцияRanking function Ранжирующие функции не поддерживаются в скомпилированных хранимых процедурах.Ranking functions are not supported in natively compiled stored procedures. Удалите их из определения процедуры.Remove them from the procedure definition.
КомпонентFunction КомпонентFunction Эта функция не поддерживается.This function is not supported. Дополнительные сведения о функциях, поддерживаемых в скомпилированных в машинный код модулях T-SQL, см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.For more information about supported functions in natively compiled T-SQL modules, see Supported Features for Natively Compiled T-SQL Modules.
.Statement ИнструкцияStatement Данная инструкция не поддерживается.This statement is not supported. Дополнительные сведения о функциях, поддерживаемых в скомпилированных в машинный код модулях T-SQL, см. в разделе Поддерживаемые функции для модулей, скомпилированных в собственном коде T-SQL.For more information about supported functions in natively compiled T-SQL modules, see Supported Features for Natively Compiled T-SQL Modules.
КомпонентFeature Значения MIN и MAX, используемые с двоичными и символьными строкамиMIN and MAX used with binary and character strings Агрегатные функции MIN и MAX нельзя использовать для символьных и двоичных строковых значений в скомпилированных хранимых процедурах.The aggregate functions MIN and MAX cannot be used for character and binary string values inside natively compiled stored procedures.
КомпонентFeature GROUP BY ALLGROUP BY ALL ALL нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах.ALL cannot be used with GROUP BY clauses in natively compiled stored procedures. Удалите ALL из предложения GROUP BY.Remove ALL from the GROUP BY clause.
КомпонентFeature GROUP BY ()GROUP BY () Группирование по пустому списку не поддерживается.Grouping by an empty list is not supported. Либо удалите предложение GROUP BY, либо включите столбцы в список группирования.Either remove the GROUP BY clause, or include columns in the grouping list.
КомпонентFeature ROLLUPROLLUP ROLLUP нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах.ROLLUP cannot be used with GROUP BY clauses in natively compiled stored procedures. Удалите ROLLUP из определения процедуры.Remove ROLLUP from the procedure definition.
КомпонентFeature CUBECUBE CUBE нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах.CUBE cannot be used with GROUP BY clauses in natively compiled stored procedures. Удалите CUBE из определения процедуры.Remove CUBE from the procedure definition.
КомпонентFeature GROUPING SETSGROUPING SETS GROUPING SETS нельзя использовать с предложениями GROUP BY в скомпилированных в собственном коде хранимых процедурах.GROUPING SETS cannot be used with GROUP BY clauses in natively compiled stored procedures. Удалите GROUPING SETS из определения процедуры.Remove GROUPING SETS from the procedure definition.
КомпонентFeature BEGIN TRANSACTION, COMMIT TRANSACTION и ROLLBACK TRANSACTIONBEGIN TRANSACTION, COMMIT TRANSACTION, and ROLLBACK TRANSACTION Используйте блоки ATOMIC для управления транзакциями и обработки ошибок.Use ATOMIC blocks to control transactions and error handling. Дополнительные сведения см. в статье Atomic Blocks.For more information, see Atomic Blocks.
КомпонентFeature Встроенные объявления табличной переменной.Inline table variable declarations. Табличные переменные должны ссылаться на явно определенные табличные типы с оптимизацией для памяти.Table variables must reference explicitly defined memory-optimized table types. Необходимо создать тип оптимизированной для памяти таблицы и использовать этот тип для объявления переменной вместо указания встроенного типа.You should create a memory-optimized table type and use that type for the variable declaration, rather than specifying the type inline.
КомпонентFeature Таблицы на дискеDisk-based tables Доступ к таблицам на диске нельзя осуществлять из скомпилированных в собственном коде хранимых процедур.Disk-based tables cannot be accessed from natively compiled stored procedures. Удаляйте ссылки на таблицы на диске из скомпилированных в собственном коде хранимых процедур.Remove references to disk-based tables from the natively-compiled stored procedures. Либо выполните миграцию таблиц на диске в таблицы, оптимизированные для памяти.Or, migrate the disk-based table(s) to memory optimized.
КомпонентFeature ПредставленияViews Доступ к представлениям нельзя осуществлять из скомпилированных в собственном коде хранимых процедур.Views cannot be accessed from natively compiled stored procedures. Вместо представлений ссылайтесь на базовые таблицы.Instead of views, reference the underlying base tables.
КомпонентFeature Функции с табличным значениемTable valued functions Область применения: База данных SQL AzureAzure SQL Database и SQL Server начиная с версии SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: База данных SQL AzureAzure SQL Database and SQL Server starting SQL Server 2016 (13.x);SQL Server 2016 (13.x)
К функциям с несколькими инструкциями и табличными значениями нельзя обращаться из скомпилированных в машинный код модулей T-SQL.Multi-statement table-valued functions cannot be accessed from natively compiled T-SQL modules. Встроенные функции с табличными значениями поддерживаются, но должны создаваться с пометкой WITH NATIVE_COMPILATION.Inline table-valued functions are supported, but must be created WITH NATIVE_COMPILATION.

Область применения: SQL Server 2014 (12.x)SQL Server 2014 (12.x)Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x)
К функциям с табличными значениями нельзя обращаться из скомпилированных в машинный код модулей T-SQL.Table-valued functions cannot be referenced from natively compiled T-SQL modules.
ПараметрOption PRINTPRINT Удаление ссылки.Remove reference
КомпонентFeature DDLDDL Код на языке описания данных DDL не поддерживается в модулях T-SQL, скомпилированных в машинный код.No DDL is supported inside natively compiled T-SQL modules.
ПараметрOption STATISTICS XMLSTATISTICS XML Не поддерживается.Not supported. Когда вы выполняете запрос с включенным параметром STATISTICS XML, XML-содержимое возвращается без части для скомпилированной в собственном коде хранимой процедуры.When you run a query, with STATISTICS XML enabled, the XML content is returned without the part for the natively compiled stored procedure.

Транзакции, обращающиеся к оптимизированным для памяти таблицамTransactions that Access Memory-Optimized Tables

В следующей таблице перечислены функции и ключевые слова Transact-SQLTransact-SQL , которые могут присутствовать в тексте ошибки, связанной с транзакциями, которые обращаются к оптимизированным для памяти таблицам, а также действия по исправлению данной ошибки.The following table lists the Transact-SQLTransact-SQL features and keywords that can appear in the message text of an error involving transactions that access memory-optimized tables, as well as the corrective action to resolve the error.

ТипType ИмяName РешениеResolution
КомпонентFeature точка сохраненияsavepoint Создание явных точек сохранения в транзакциях, которых обращаются к оптимизированным для памяти таблицам, не поддерживается.Creating explicit savepoints in transactions that access memory-optimized tables is not supported.
КомпонентFeature привязанная транзакцияbound transaction Связанные сеансы не могут участвовать в транзакциях, которые обращаются к оптимизированным для памяти таблицам.Bound sessions cannot participate in transactions that access memory-optimized tables. Не привязывайте сеанс до выполнения процедуры.Do not bind the session before executing the procedure.
КомпонентFeature DTCDTC Транзакции, осуществляющие доступ к оптимизированным для памяти таблицам, не могут быть распределенными транзакциями.Transactions that access memory-optimized tables cannot be distributed transactions.

См. также:See Also

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