web-dev-qa-db-ja.com

スナップショット分離で一時テーブルにインデックスを作成できないのはなぜですか?

SNAPSHOTトランザクション分離を使用しているときにSQL Serverの一時テーブルにインデックスを作成しようとすると、次のエラーが発生します。

このDDLステートメントはスナップショット分離トランザクション内では許可されていないため、トランザクションが失敗しました。メタデータはバージョン管理されていないため、スナップショット分離内に混在すると、メタデータの変更により不整合が生じる可能性があります。

スナップショットを使用するときにSQL Serverの一時テーブルでインデックスの作成が許可されていないなのはなぜですか?

これを理解できません。一時テーブルの作成が許可されているのに、インデックスを追加できないのはなぜですか?

6
Tom Pažourek

SQL Serverの最新バージョン(2014以降)では、テーブルを作成するときにインデックスを作成できます。例えば

create table #t(id int primary key, a int, index ix_a nonclustered(a))

また、スナップショットトランザクションが開始する前に一時テーブルを作成することもできます。