SQL Server 2014 の In-Memory OLTP のメモリ最適化テーブルでは一時テーブルを作成来ることはできません。
ただし、メモリ最適化テーブルデータ型 (Memory-Optimized Table Type) を作成することができます。
Transact-SQL によるインメモリ OLTP のサポート
CREATE TYPE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
ユーザー定義テーブル型を新規作成する際に [ユーザー定義の目盛最適化テーブルの型] を作成することができます。
以下のようなクエリでメモリ最適化テーブルのデータ型を作成することができます。
USE HekatonDB GO IF TYPE_ID('dbo.MemoryTableType') IS NOT NULL DROP TYPE dbo.MemoryTableType GO CREATE TYPE dbo.MemoryTableType AS TABLE ( c1 int NOT NULL, c2 int NOT NULL, c3 int NOT NULL INDEX ix_MemoryTT_c3 NONCLUSTERED (c3), c4 int NOT NULL INDEX hash_index_MemoryTT_c4 NONCLUSTERED HASH (c4) WITH(BUCKET_COUNT = 10000), PRIMARY KEY NONCLUSTERED (c1), INDEX hash_index_MemoryTT_c3 HASH (c2) WITH (BUCKET_COUNT = 10000) ) WITH (MEMORY_OPTIMIZED = ON) GO
これでユーザー定義テーブル型として登録されますので、これを一時的にデータを格納するテーブルとして利用することができます。
DECLARE @MemoryTableType MemoryTableType INSERT INTO @MemoryTableType VALUES(1,1,1,1) SELECT * FROM @MemoryTableType GO DECLARE @MemoryTableType MemoryTableType SELECT * FROM @MemoryTableType GO
ネイティブコンパイルされたストアドプロシージャーでは一時テーブルや通常のユーザー定義のテーブル型は作成できませんが、メモリ最適化テーブル型であれば使用できますので、一時的にデータを格納したい場合などはこれを使うとよさそうです。