適用対象:SQL Server
Azure SQL データベース
Azure SQL Managed Instance
この記事では、次のインメモリ OLTP 機能でサポートされていないデータ型の一覧を示します。
- メモリ最適化テーブル
- ネイティブ コンパイル Transact-SQL (T-SQL) モジュール
サポートされていないデータ型
次のデータの種類はサポートされていません。
サポートされている注目すべきデータ型
In-Memory OLTP 機能は、ほとんどのデータ型をサポートします。 次の一覧は、明示的に注目する価値があります。
| 文字列型とバイナリ型 | 詳細情報 |
|---|---|
| binary と varbinary | binary と varbinary |
| char と varchar | char と varchar |
| nchar と nvarchar | nchar と nvarchar |
上記の文字列とバイナリ データ型の場合、SQL Server 2016 (13.x) 以降:
個々のメモリ最適化テーブルには 、nvarchar(4000) などの複数の長い列を含めることもできます。ただし、その長さは 8,060 バイトの物理行サイズを超えます。
メモリ最適化テーブルには、最大長の文字列と 、varchar(max) などのデータ型のバイナリ列を含めることができます。
行外の LOB 列およびその他の列の特定
SQL Server 2016 (13.x) 以降のバージョンでは、メモリ最適化テーブルでは 行外列がサポートされています。これにより、1 つのテーブル行が 8,060 バイトを超える可能性があります。 次の Transact-SQL SELECT ステートメントは、メモリ最適化テーブルの行外のすべての列を報告します。
- インデックス キー列はすべて行内に格納されます。
- 一意でないインデックス キーには、メモリ最適化テーブルに null 許容列を含めることができます。
- インデックスは、メモリ最適化テーブルで
UNIQUEとして宣言できます。
- すべての LOB 列は行外に格納されます。
-
max_lengthの-1は、ラージ オブジェクト (LOB) カラムを示します。
SELECT OBJECT_NAME(m.object_id) AS [table],
c.name AS [column],
c.max_length
FROM sys.memory_optimized_tables_internal_attributes AS m
INNER JOIN sys.columns AS c
ON m.object_id = c.object_id
AND m.minor_id = c.column_id
WHERE m.type = 5;
その他のデータ型
| その他の型 | 詳細情報 |
|---|---|
| テーブル の種類 | メモリ最適化を使用した一時テーブルとテーブル変数の高速化 |