インメモリ OLTP に対してサポートされるデータ型
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance
この記事では、次のインメモリ OLTP 機能でサポートされていないデータ型の一覧を示します。
メモリ最適化テーブル
ネイティブ コンパイル T-SQL モジュール
サポートされていないデータ型
次のデータ型はサポートされません。
サポートされる重要なデータ型
インメモリ OLTP の機能では、ほとんどのデータ型がサポートされています。 次のデータ型は特に重要です。
文字列型とバイナリ型 | 詳細情報 |
---|---|
binary と varbinary* | binary と varbinary (Transact-SQL) |
char と varchar* | char および varchar (Transact-SQL) |
nchar と nvarchar* | nchar および nvarchar (Transact-SQL) |
上記の文字列データ型とバイナリ データ型については、SQL Server 2016 以降は次のようになります。
個々のメモリ最適化テーブルには、それらの長さが 8,060 バイトの物理行サイズを超えることがあっても、
nvarchar(4000)
などの複数の長い列が含まれている場合があります。メモリ最適化テーブルには、
varchar(max)
などのデータ型の最大長の文字列やバイナリ列がある場合があります。
行外の LOB 列およびその他の列の特定
SQL Server 2016 以降では、メモリ最適化テーブルが行外の列をサポートするため、1 つのテーブルの行を 8060 バイトよりも大きくすることができます。 次の 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
JOIN sys.columns AS c
ON m.object_id = c.object_id
AND m.minor_id = c.column_id
WHERE
m.type = 5;
その他のデータ型
その他の型 | 詳細情報 |
---|---|
テーブル型 | メモリ最適化テーブル変数 |
参照
Transact-SQL によるインメモリ OLTP のサポート
メモリ最適化テーブルへの SQL_VARIANT の実装
メモリ最適化テーブルのテーブルと行のサイズ