インメモリ OLTP でサポートされていない Transact-SQL の構造
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance
メモリ最適化テーブルと、ネイティブ コンパイル ストアド プロシージャおよびユーザー定義関数では、ディスク ベース テーブルと、Transact-SQL で解釈された ストアド プロシージャおよびユーザー定義関数でサポートされる完全な Transact-SQL 領域はサポートされません。 サポートされていない機能を使用しようとすると、サーバーはエラーを返します。
エラー メッセージのテキストには、Transact-SQL ステートメントの種類 (機能、操作、オプションなど) と、機能名または Transact-SQL キーワード名が含まれます。 ほとんどのサポートされていない機能では、サポートされていない機能を示すエラー メッセージ テキストと共にエラー 10794 が返されます。 次の表に、エラー メッセージのテキストに表示される可能性がある Transact-SQL の機能およびキーワードと、エラーを解決するための修正措置を示します。
メモリ最適化テーブルとネイティブ コンパイル ストアド プロシージャでサポートされる機能の詳細については、次のトピックを参照してください。
インメモリ OLTP を使用するデータベース
次の表に、サポートされていない Transact-SQL 機能、およびインメモリ OLTP データベースに関するエラー メッセージのテキストに含まれるキーワードを示します。 また、エラーの解決方法も示します。
Type | 名前 | 解決方法 |
---|---|---|
オプション | AUTO_CLOSE | データベース オプション AUTO_CLOSE=ON は、MEMORY_OPTIMIZED_DATA ファイル グループのあるデータベースではサポートされていません。 |
オプション | ATTACH_REBUILD_LOG | CREATE データベース オプション ATTACH_REBUILD_LOG は、MEMORY_OPTIMIZED_DATA ファイル グループのあるデータベースではサポートされていません。 |
機能 | DATABASE SNAPSHOT | データベース スナップショットの作成は、MEMORY_OPTIMIZED_DATA ファイル グループのあるデータベースではサポートされていません。 |
機能 | sync_method 'database snapshot' または 'database snapshot character' の使用によるレプリケーション | sync_method 'database snapshot' または 'database snapshot character' の使用によるレプリケーションは、MEMORY_OPTIMIZED_DATA ファイル グループのあるデータベースではサポートされていません。 |
機能 | DBCC CHECKDB DBCC CHECKTABLE |
DBCC CHECKDB では、データベース内のメモリ最適化テーブルがスキップされます。 DBCC CHECKTABLE は、メモリ最適化テーブルで失敗します。 |
メモリ最適化テーブル
次の表に、サポートされていない Transact-SQL 機能、およびメモリ最適化テーブルに関するエラー メッセージのテキストに含まれるキーワードを示します。 また、エラーの解決方法も示します。
Type | 名前 | 解決方法 |
---|---|---|
機能 | ON | メモリ最適化テーブルをファイル グループまたはパーティション構成に配置できません。 CREATE TABLE ステートメントから ON 句を削除します。 すべてのメモリ最適化テーブルは、メモリ最適化ファイル グループにマップされます。 |
データの種類 | データ型名 | 指示されたデータ型はサポートされていません。 サポートされているデータ型に置き換えます。 詳細については、「 サポートされるデータ型」を参照してください。 |
機能 | 計算列 | 適用対象: SQL Server 2014 (12.x) および SQL Server 2016 (13.x) 計算列は、メモリ最適化テーブルではサポートされていません。 CREATE TABLE ステートメントから計算列を削除します。 Azure SQL Database および SQL Server 以降の SQL Server 2017 (14.x) では、メモリ最適化テーブルでの計算列およびインデックスをサポートしています。 |
機能 | レプリケーション | レプリケーションはメモリ最適化テーブルではサポートされていません。 |
機能 | FILESTREAM | FILESTREAM ストレージは、メモリ最適化テーブルのサポートされた列ではありません。 列定義から FILESTREAM キーワードを削除します。 |
機能 | SPARSE | メモリ最適化テーブルの列を SPARSE として定義することはできません。 列定義から SPARSE キーワードを削除します。 |
機能 | ROWGUIDCOL | ROWGUIDCOL オプションはメモリ最適化テーブルの列ではサポートされていません。 列定義から ROWGUIDCOL キーワードを削除します。 |
機能 | FOREIGN KEY | 適用対象: Azure SQL データベースおよび SQL Server (SQL Server 2016 (13.x) 以降) メモリ最適化テーブルでは、FOREIGN KEY 制約は、他のメモリ最適化テーブルの主キーを参照している外部キーでのみサポートされます。 外部キーが一意制約を参照している場合は、テーブル定義から制約を削除します。 SQL Server 2014 (12.x) では、外部キー制約はメモリ最適化テーブルでサポートされていません。 |
機能 | クラスター化インデックス | 非クラスター化インデックスを指定します。 主キー インデックスの場合は PRIMARY KEY NONCLUSTERED を指定する必要があります。 |
機能 | DDL 内部トランザクション | メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャは、ユーザー トランザクションのコンテキストで作成または削除できません。 トランザクションを開始せず、CREATE または DROP ステートメントを実行する前にセッション設定 IMPLICIT_TRANSACTION を OFF に設定していることを確認します。 |
機能 | DDL トリガー | DDL 操作のサーバーまたはデータベース トリガーがある場合は、メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャを作成または削除できません。 CREATE/DROP TABLE および CREATE/DROP PROCEDURE のサーバーおよびデータベース トリガーを削除します。 |
機能 | EVENT NOTIFICATION | DDL 操作のサーバーまたはデータベース イベント通知がある場合は、メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャを作成または削除できません。 CREATE TABLE または DROP TABLE および CREATE PROCEDURE または DROP PROCEDURE のサーバーおよびデータベース イベント通知を削除します。 |
機能 | FileTable | メモリ最適化テーブルをファイル テーブルとして作成できません。 引数 AS FileTable を CREATE TABLE ステートメントから削除してください。 |
操作 | 主キー列の更新 | メモリ最適化テーブルおよびテーブル型の主キー列を更新できません。 主キーを更新する必要がある場合は、古い行を削除し、更新された主キーで新しい行を挿入します。 |
操作 | CREATE INDEX | メモリ最適化テーブルのインデックスは、 CREATE TABLE ステートメントまたは ALTER TABLE ステートメントを使用してインラインで指定する必要があります。 |
操作 | CREATE FULLTEXT INDEX … | フルテキスト インデックスは、メモリ最適化テーブルでサポートされていません。 |
操作 | スキーマの変更 | メモリ最適化テーブルとネイティブ コンパイル ストアド プロシージャでは、以下のスキーマの変更はサポートされていません。 Azure SQL Database および SQL Server 以降の SQL Server 2017 (14.x): ALTER TABLE、ALTER PROCEDURE、および sp_rename 操作がサポートされています。 拡張プロパティの追加など、その他のスキーマの変更はサポートされていません。 SQL Server 2016 (13.x): ALTER TABLE、ALTER PROCEDURE 操作がサポートされています。 sp_rename など、その他のスキーマ変更はサポートされていません。 SQL Server 2014 (12.x): スキーマの変更はサポートされていません。 メモリ最適化テーブルまたはネイティブ コンパイル ストアド プロシージャの定義を変更するには、まずオブジェクトを削除し、次に目的の定義でオブジェクトを再作成します。 |
操作 | TRUNCATE TABLE | メモリ最適化テーブルでは TRUNCATE 操作はサポートされません。 テーブルからすべての行を削除するにはDELETE FROM table を使ってすべての行を削除するか、テーブルを削除してから再作成します。 |
操作 | ALTER AUTHORIZATION | 既存のメモリ最適化テーブルまたはネイティブ コンパイル ストアド プロシージャでの所有者の変更はサポートされていません。 所有者を変更するには、テーブルまたはプロシージャを削除した後、再作成します。 |
操作 | ALTER SCHEMA | 既存のメモリ最適化テーブルまたはネイティブ コンパイル ストアド プロシージャを別のスキーマに転送することはサポートされていません。 スキーマ間で転送を行うには、オブジェクトを削除してから再作成します。 |
操作 | DBCC CHECKTABLE | DBCC CHECKTABLE はメモリ最適化テーブルではサポートされていません。 ディスク上のチェックポイント ファイルの整合性を確認するには、MEMORY_OPTIMIZED_DATA ファイル グループのバックアップを実行します。 |
機能 | ANSI_PADDING OFF | メモリ最適化テーブルまたはネイティブ コンパイル ストアド プロシージャを作成するときは、セッション オプション ANSI_PADDING は ON にする必要があります。 CREATE ステートメントを実行する前に、 SET ANSI_PADDING ON を実行します。 |
オプション | DATA_COMPRESSION | データ圧縮は、メモリ最適化テーブルではサポートされていません。 テーブル定義からオプションを削除します。 |
機能 | DTC | メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャは、分散トランザクションからアクセスできません。 代わりに SQL トランザクションを使用してください。 |
操作 | MERGE のターゲットとしてのメモリ最適化テーブル | メモリ最適化テーブルを MERGE 操作の対象にすることはできません。 代わりに、INSERT、UPDATE、または DELETE ステートメントを使用します。 |
メモリ最適化テーブルのインデックス
次の表に、メモリ最適化テーブルのインデックスに関連したエラー メッセージのテキストに表示される可能性がある Transact-SQL の機能およびキーワードと、エラーを解決するための修正措置を示します。
Type | 名前 | 解決方法 |
---|---|---|
機能 | フィルター選択されたインデックス | フィルター選択されたインデックスは、メモリ最適化テーブルでサポートされていません。 インデックスの指定から WHERE 句を削除します。 |
機能 | [付加列] | 付加列の指定は、メモリ最適化テーブルにとって必須ではありません。 メモリ最適化テーブルのすべての列は、各メモリ最適化インデックスに暗黙的に含まれています。 |
操作 | DROP INDEX | メモリ最適化テーブルのインデックスの削除はサポートされていません。 インデックスを削除するには、ALTER TABLE を使用します。 詳細については、「 メモリ最適化テーブルの変更」を参照してください。 |
インデックス オプション | インデックス オプション | 1 つのインデックス オプション - HASH インデックスの BUCKET_COUNT のみがサポートされています。 |
非クラスター化ハッシュ インデックス
次の表に、非クラスター化ハッシュ インデックスに関連したエラー メッセージのテキストに表示される可能性がある Transact-SQL の機能およびキーワードと、エラーを解決するための修正措置を示します。
Type | 名前 | 解決方法 |
---|---|---|
オプション | ASC/DESC | 非クラスター化ハッシュ インデックスは順序付けされません。 インデックス キーの指定からキーワード ASC および DESC を削除します。 |
ネイティブ コンパイル ストアド プロシージャおよびユーザー定義関数
次の表に、ネイティブ コンパイル ストアド プロシージャおよびユーザー定義関数に関連したエラー メッセージのテキストに表示される可能性がある Transact-SQL の機能およびキーワードと、エラーを解決するための修正措置を示します。
Type | 機能 | 解決方法 |
---|---|---|
機能 | インライン テーブル変数 | テーブル型は、変数宣言を使用してインラインで宣言できません。 テーブル型は、 CREATE TYPE ステートメントを使用して明示的に宣言する必要があります。 |
機能 | カーソル | カーソルは、ネイティブ コンパイル ストアド プロシージャではサポートされていません。 クライアントからプロシージャを実行する場合、カーソル API ではなく RPC を使用します。 ODBC で、Transact-SQL ステートメントから削除してください。EXECUTEを避け、代わりにプロシージャの名前を直接指定します。 Transact-SQL バッチまたは他のストアド プロシージャからプロシージャを実行する場合、ネイティブ コンパイル ストアド プロシージャでカーソルを使用しないでください。 ネイティブ コンパイル ストアド プロシージャを作成する場合は、カーソルを使用せずに、セットベースのロジックまたは WHILE ループを使用します。 |
機能 | 定数以外のパラメーターの既定値 | ネイティブ コンパイル ストアド プロシージャのパラメーターで既定値を使用する場合、値は定数にする必要があります。 パラメーター宣言からワイルドカードを削除します。 |
機能 | EXTERNAL | CLR ストアド プロシージャをネイティブでコンパイルすることはできません。 CREATE PROCEDURE ステートメントから AS EXTERNAL 句または NATIVE_COMPILATION オプションを削除します。 |
機能 | 番号付きストアド プロシージャ | ネイティブ コンパイル ストアド プロシージャには番号を付けられません。 CREATE PROCEDUREステートメントから ; number を削除してください。 |
機能 | 複数行 INSERT ...VALUES ステートメント | ネイティブ コンパイル ストアド プロシージャでは、同じ INSERT ステートメントを使用して複数行を挿入できません。 各行に対して INSERT ステートメントを作成します。 |
機能 | 共通テーブル式 (CTE) | 共通テーブル式 (CTE) は、ネイティブ コンパイル ストアド プロシージャでサポートされません。 クエリを書き直します。 |
機能 | COMPUTE | COMPUTE 句はサポートされていません。 クエリから削除します。 |
機能 | SELECT INTO | INTO 句は SELECT ステートメントではサポートされていません。 クエリを INSERT INTO Table SELECT に書き換えます。 |
機能 | 不完全な挿入列リスト | 通常、INSERT ステートメントでは、テーブルのすべての列に値を指定する必要があります。 ただし、メモリ最適化テーブルでは、DEFAULT 制約と IDENTITY(1,1) 列はサポートされません。 これらの列は INSERT 列リストから省略でき、IDENTITY 列の場合は INSERT 列リストから省略する必要があります。 |
機能 | 関数 | いくつかの組み込み関数は、ネイティブ コンパイル ストアド プロシージャではサポートされません。 ストアド プロシージャから、拒否された関数を削除します。 サポートされる組み込み関数の詳細については、 「ネイティブ コンパイル T-SQL モジュールでサポートされる機能」または 「ネイティブ コンパイル ストアド プロシージャ」を参照してください。 |
機能 | CASE | 適用対象: SQL Server 2014 (12.x) および SQL Server (SQL Server 2016 (13.x) 以降) CASE 式は、ネイティブ コンパイル ストアド プロシージャ内のクエリではサポートされていません。 各ケースのクエリを作成します。 詳細については、「 ネイティブ コンパイル ストアド プロシージャに CASE 式を実装する」を参照してください。 Azure SQL Database および SQL Server (SQL Server 2017 (14.x) 以降) は、CASE 式をサポートしています。 |
機能 | INSERT EXECUTE | 参照を削除します。 |
機能 | EXECUTE | ネイティブ コンパイル ストアド プロシージャおよびユーザー定義関数を実行する場合にのみサポートされます。 |
機能 | ユーザー定義集計 | ユーザー定義集計関数はネイティブ コンパイル ストアド プロシージャ内で使用できません。 プロシージャから関数への参照を削除します。 |
機能 | ブラウズ モード メタデータ | ネイティブ コンパイル ストアド プロシージャでは、ブラウズ モード メタデータはサポートされていません。 セッション オプション NO_BROWSETABLE を OFF に設定します。 |
機能 | FROM 句と DELETE | ネイティブ コンパイル ストアド プロシージャ内でテーブル ソースを指定した FROM ステートメントに対して DELETE 句はサポートされません。 DELETE 句を使用した FROM がサポートされるのは、削除元のテーブルを示すために句を使用している場合です。 |
機能 | FROM 句と UPDATE | ネイティブ コンパイル ストアド プロシージャ内の FROM ステートメントに対して UPDATE 句はサポートされません。 |
機能 | 一時プロシージャ | 一時ストアド プロシージャはネイティブでコンパイルできません。 永続的なネイティブ コンパイル ストアド プロシージャまたは一時的に解釈された Transact-SQL ストアド プロシージャを作成します。 |
分離レベル | READ UNCOMMITTED | ネイティブ コンパイル ストアド プロシージャに対して分離レベル READ UNCOMMITTED はサポートされません。 SNAPSHOT など、サポートされる分離レベルを使用します。 |
分離レベル | READ COMMITTED | ネイティブ コンパイル ストアド プロシージャに対して分離レベル READ COMMITTED はサポートされません。 SNAPSHOT など、サポートされる分離レベルを使用します。 |
機能 | 一時テーブル | tempdb 内のテーブルはネイティブ コンパイル ストアド プロシージャ内では使用できません。 代わりに、テーブル変数または DURABILITY=SCHEMA_ONLY のメモリ最適化テーブルを使用します。 |
機能 | DTC | メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャは、分散トランザクションからアクセスできません。 代わりに SQL トランザクションを使用してください。 |
機能 | EXECUTE WITH RECOMPILE | オプション WITH RECOMPILE は、ネイティブ コンパイル ストアド プロシージャではサポートされていません。 |
機能 | 専用管理者接続からの実行 | ネイティブ コンパイル ストアド プロシージャでは、専用管理者接続 (DAC) から実行することはできません。 通常の接続を使用してください。 |
操作 | savepoint | ネイティブ コンパイル ストアド プロシージャは、アクティブなセーブポイントを含むトランザクションから呼び出すことはできません。 トランザクションからセーブポイントを削除します。 |
操作 | ALTER AUTHORIZATION | 既存のメモリ最適化テーブルまたはネイティブ コンパイル ストアド プロシージャでの所有者の変更はサポートされていません。 所有者を変更するには、テーブルまたはプロシージャを削除した後、再作成します。 |
Operator | OPENROWSET | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから OPENROWSET を削除します。 |
Operator | OPENQUERY | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから OPENQUERY を削除します。 |
Operator | OPENDATASOURCE | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから OPENDATASOURCE を削除します。 |
Operator | OPENXML | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから OPENXML を削除します。 |
Operator | CONTAINSTABLE | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから CONTAINSTABLE を削除します。 |
Operator | FREETEXTTABLE | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから FREETEXTTABLE を削除します。 |
機能 | テーブル値関数 | テーブル値関数はネイティブ コンパイル ストアド プロシージャから参照できません。 この制限に関する対処方法の 1 つは、プロシージャの本体にテーブル値関数のロジックを追加することです。 |
Operator | CHANGETABLE | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから CHANGETABLE を削除します。 |
Operator | GOTO | この演算子はサポートされていません。 WHILE など他の構造を使用します。 |
Operator | OFFSET | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから OFFSET を削除します。 |
Operator | INTERSECT | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから INTERSECT を削除します。 場合によっては INNER JOIN を使用して同じ結果を得ることができます。 |
Operator | EXCEPT | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから EXCEPT を削除します。 |
Operator | APPLY | 適用対象: SQL Server 2014 (12.x) および SQL Server (SQL Server 2016 (13.x) 以降) この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから APPLY を削除します。 Azure SQL Database および SQL Server 以降の SQL Server 2017 (14.x) では、ネイティブ コンパイル モジュール内で APPLY 演算子をサポートしていません。 |
Operator | PIVOT | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから PIVOT を削除します。 |
Operator | UNPIVOT | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから UNPIVOT を削除します。 |
Operator | CONTAINS | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから CONTAINS を削除します。 |
Operator | FREETEXT | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから FREETEXT を削除します。 |
Operator | TSEQUAL | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから TSEQUAL を削除します。 |
Operator | LIKE | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから LIKE を削除します。 |
Operator | NEXT VALUE FOR | シーケンスは、ネイティブ コンパイル ストアド プロシージャ内で参照できません。 解釈された Transact-SQL を使用して値を取得し、それをネイティブ コンパイル ストアド プロシージャに渡します。 詳細については、「 メモリ最適化テーブルへの IDENTITY の実装」を参照してください。 |
SET オプション | オプション | SET オプションは、ネイティブ コンパイル ストアド プロシージャ内で変更できません。 特定のオプションは BEGIN ATOMIC ステートメントで設定できます。 詳細については、「 Natively Compiled Stored Procedures」の ATOMIC ブロックに関するセクションを参照してください。 |
オペランド | TABLESAMPLE | この演算子はサポートされていません。 ネイティブ コンパイル ストアド プロシージャから TABLESAMPLE を削除します。 |
オプション | RECOMPILE | ネイティブ コンパイル ストアド プロシージャは、作成時にコンパイルされます。 プロシージャの定義から RECOMPILE を削除します。 ネイティブ コンパイル ストアド プロシージャに対して sp_recompile を実行できます。これにより、このプロシージャは次の実行時に再コンパイルされます。 |
オプション | 暗号化 | このオプションはサポートされていません。 プロシージャの定義から ENCRYPTION を削除します。 |
オプション | FOR REPLICATION | ネイティブ コンパイル ストアド プロシージャはレプリケーション用に作成できません。 プロシージャの定義から FOR REPLICATION を削除します。 |
オプション | FOR XML | このオプションはサポートされていません。 ネイティブ コンパイル ストアド プロシージャから FOR XML を削除します。 |
オプション | FOR BROWSE | このオプションはサポートされていません。 ネイティブ コンパイル ストアド プロシージャから FOR BROWSE を削除します。 |
結合ヒント | HASH、MERGE | ネイティブ コンパイル ストアド プロシージャは、入れ子になったループ結合のみをサポートします。 HASH および MERGE 結合はサポートされていません。 結合ヒントを削除します。 |
クエリ ヒント | クエリ ヒント | このクエリ ヒントはネイティブ コンパイル ストアド プロシージャ内にありません。 サポートされているクエリ ヒントについては、「クエリ ヒント (Transact-SQL)」を参照してください。 |
オプション | PERCENT | このオプションは TOP 句でサポートされていません。 ネイティブ コンパイル ストアド プロシージャのクエリから PERCENT を削除します。 |
オプション | WITH TIES | 適用対象: SQL Server 2014 (12.x) および SQL Server 2016 (13.x) このオプションは TOP 句でサポートされていません。 ネイティブ コンパイル ストアド プロシージャのクエリから WITH TIES を削除します。 Azure SQL Database 、SQL Server 2017 (14.x) 以降は TOP WITH TIES をサポートしています。 |
集計関数 | 集計関数 | 集計関数はすべてサポートされているわけではありません。 ネイティブ コンパイル T-SQL モジュールでサポートされている集計関数の詳細については、「ネイティブ コンパイル T-SQL モジュールでサポートされる機能」を参照してください。 |
順位付け関数 | 順位付け関数 | 順位付け関数は、ネイティブ コンパイル ストアド プロシージャではサポートされていません。 プロシージャの定義から削除します。 |
機能 | 関数 | この関数はサポートされません。 ネイティブ コンパイル T-SQL モジュールでサポートされている関数の詳細については、「ネイティブ コンパイル T-SQL モジュールでサポートされる機能」を参照してください。 |
ステートメント | ステートメント | このステートメントはサポートされていません。 ネイティブ コンパイル T-SQL モジュールでサポートされている関数の詳細については、「ネイティブ コンパイル T-SQL モジュールでサポートされる機能」を参照してください。 |
機能 | バイナリおよび文字列で使用される MIN と MAX | 集計関数 MIN および MAX は、ネイティブ コンパイル ストアド プロシージャ内の文字やバイナリ文字列値に使用できません。 |
機能 | GROUP BY ALL | ALL は、ネイティブ コンパイル ストアド プロシージャ内の GROUP BY 句では使用できません。 GROUP BY 句から ALL を削除します。 |
機能 | GROUP BY () | 空のリストによる GROUP BY はサポートされていません。 GROUP BY 句を削除するか、グループ化リストに列を含めます。 |
機能 | ROLLUP | ROLLUP は、ネイティブ コンパイル ストアド プロシージャ内の GROUP BY 句では使用できません。 プロシージャの定義から ROLLUP を削除します。 |
機能 | CUBE | CUBE は、ネイティブ コンパイル ストアド プロシージャ内の GROUP BY 句では使用できません。 プロシージャの定義から CUBE を削除します。 |
機能 | GROUPING SETS | GROUPING SETS は、ネイティブ コンパイル ストアド プロシージャ内の GROUP BY 句では使用できません。 プロシージャの定義から GROUPING SETS を削除します。 |
機能 | BEGIN TRANSACTION、COMMIT TRANSACTION、ROLLBACK TRANSACTION | ATOMIC ブロックを使用してトランザクションおよびエラー処理を制御します。 詳細については、「 Atomic Blocks」を参照してください。 |
機能 | インライン テーブル変数の宣言。 | テーブル変数は、明示的に定義されたメモリ最適化テーブル型を参照する必要があります。 メモリ最適化テーブル型を作成し、(インライン型を指定する変わりに) 変数の宣言でその型を使用します。 |
機能 | ディスク ベース テーブル | ディスク ベース テーブルには、ネイティブ コンパイル ストアド プロシージャからアクセスできません。 ディスクベース テーブルへの参照をネイティブ コンパイル ストアド プロシージャから削除します。 または、ディスク ベース テーブルをメモリ最適化テーブルに移行します。 |
機能 | 表示 | ビューには、ネイティブ コンパイル ストアド プロシージャからアクセスできません。 ビューではなく、基になるベース テーブルを参照します。 |
機能 | テーブル値関数 | 適用対象: Azure SQL データベースおよび SQL Server (SQL Server 2016 (13.x) 以降) 複数ステートメントのテーブル値関数には、ネイティブ コンパイル T-SQL モジュールからアクセスできません。 インライン テーブル値関数はサポートされていますが、NATIVE_COMPILATION で作成する必要があります。 適用対象: SQL Server 2014(12.x) テーブル値関数はネイティブ コンパイル T-SQL モジュールから参照できません。 |
オプション | 参照を削除します。 | |
機能 | DDL | DDL はネイティブ コンパイル T-SQL モジュールでサポートされていません。 |
オプション | STATISTICS XML | サポートされていません。 STATISTICS XML を有効にしてクエリを実行すると、ネイティブ コンパイル ストアド プロシージャの部分が欠如した XML コンテンツが返されます。 |
メモリ最適化テーブルにアクセスするトランザクション
次の表に、メモリ最適化テーブルにアクセスするトランザクションに関連したエラー メッセージのテキストに表示される可能性がある Transact-SQL の機能およびキーワードと、エラーを解決するための修正措置を示します。
Type | 名前 | 解決方法 |
---|---|---|
機能 | savepoint | メモリ最適化テーブルにアクセスするトランザクション内での明示的なセーブポイントの作成はサポートされていません。 |
機能 | バインドされたトランザクション | バインドされたセッションは、メモリ最適化テーブルにアクセスするトランザクションに参加できません。 プロシージャを実行する前にセッションをバインドしないでください。 |
機能 | DTC | メモリ最適化テーブルにアクセスするトランザクションは、分散トランザクションにすることはできません。 |