データベースでスナップショットを有効にして SET TRANSACTION ISOLATION LEVEL SNAPSHOT を使用していますが、次のような単純な削除ステートメントを実行すると、
BEGIN TRANSACTION
DELETE * FROM TableA
INSERT INTO TableA(...) SELECT (...) FROM TableB
COMMIT TRANSACTION
データが別のテーブルからロードされると、テーブルを効果的に一掃し、新しいデータを再入力します。この操作が行われている間に、スナップショットが宣言されたトランザクションでも実行される単純な選択を行います。たとえば、
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
SELECT ID FROM TableA WHERE SomeColumn = 'A'
DELETE / INSERT ステートメントが実行されている場合はテーブルをスキャンし、それ以外の場合はインデックス シークを実行します。それは期待される動作ですか?