インメモリ OLTP でサポートされていない Transact-SQL の構造Transact-SQL Constructs Not Supported by In-Memory OLTP

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

メモリ最適化テーブルと、ネイティブ コンパイル ストアド プロシージャおよびユーザー定義関数では、ディスク ベース テーブルと、解釈された 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 機能、およびインメモリ 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 CREATE データベース オプション ATTACH_REBUILD_LOG は、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 sync_method 'database snapshot' または 'database snapshot character' の使用によるレプリケーションReplication using the sync_method 'database snapshot' or 'database snapshot character' sync_method '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. CREATE TABLE ステートメントから ON 句を削除します。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. 詳細については、「 サポートされるデータ型」を参照してください。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.

Azure SQL データベースAzure SQL Database および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降の SQL Server では、メモリ最適化テーブルでの計算列およびインデックスをサポートしています。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 適用対象: Azure SQL データベースAzure SQL Database および SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降の SQL ServerApplies to: Azure SQL データベースAzure 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) では、外部キー制約はメモリ最適化テーブルでサポートされていません。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_TRANSACTION を 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 FileTableCREATE 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:
Azure SQL データベースAzure SQL Database および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降の SQL Server: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 FROMtable を使用してすべての行を削除するか、テーブルを削除してから再作成します。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. CREATE ステートメントを実行する前に、 SET ANSI_PADDING ON を実行します。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 MERGE のターゲットとしてのメモリ最適化テーブルMemory-optimized tables as target of MERGE メモリ最適化テーブルを MERGE 操作の対象にすることはできません。Memory-optimized tables cannot be the target of a MERGE operation. 代わりに、INSERTUPDATE、または 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 1 つのインデックス オプション - HASH インデックスの BUCKET_COUNT のみがサポートされています。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.

クライアントからプロシージャを実行する場合、カーソル API ではなく RPC を使用します。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. CREATE PROCEDURE ステートメントから AS EXTERNAL 句または NATIVE_COMPILATION オプションを削除します。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ステートメントから ; number を削除してください。Remove the ;number from the CREATE PROCEDURE statement.
機能Feature 複数行の INSERT...VALUES ステートメントmulti-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 共通テーブル式 (CTE)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 Table 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. これらの列は INSERT 列リストから省略でき、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-SQL モジュールでサポートされる機能」またはSupported 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 2016 (13.x)SQL Server 2016 (13.x) 以降の SQL ServerApplies 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.

Azure SQL データベースAzure SQL Database および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降の SQL Server では 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 FROM 句と DELETEDELETE 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 FROM 句と UPDATEUPDATE 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)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. この制限に関する対処方法の 1 つは、プロシージャの本体にテーブル値関数のロジックを追加することです。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 2016 (13.x)SQL Server 2016 (13.x) 以降の SQL ServerApplies 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.

Azure SQL データベースAzure SQL Database および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降の SQL Server では、ネイティブ コンパイル モジュール内で 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.
SET オプションSet 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」の ATOMIC ブロックに関するセクションを参照してください。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 および MERGE 結合はサポートされていません。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.

Azure SQL データベースAzure SQL Database および SQL Server 2017 (14.x)SQL Server 2017 (14.x) 以降の SQL Server では、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 と MAXMIN 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. GROUP BY 句から ALL を削除します。Remove ALL from the GROUP BY clause.
機能Feature GROUP BY ()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 適用対象: Azure SQL データベースAzure SQL Database および SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降の SQL ServerApplies to: Azure SQL データベースAzure 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. インライン テーブル値関数はサポートされていますが、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 DDL (DDL)DDL 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)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

インメモリ OLTP への移行Migrating to In-Memory OLTP