sys.dm_tran_active_snapshot_database_transactions (Transact-sql)

In a SQL Serverörneği, bu dinamik yönetimi görünüm verir bir sanal tablo oluşturmak veya potansiyel olarak satır sürümleri tüm etkin işlemler için. İşlemler, bir veya daha aşağıdaki koşulları için eklenmiştir:

  • Ne zaman birini veya her ikisini ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT veritabanı seçenek on olarak ayarlanır:

    • Anlık görüntü yalıtım düzeyi veya satır sürüm oluşturmayı kullanarak okuma kaydedilmiş yalıtım düzeyi altında çalışan her hareket için bir satır yok.

    • Orada neden bir satır sürümü geçerli veritabanında oluşturulmuş her hareket için bir satır vardır. Örneğin, hareket, güncelleştirme veya geçerli veritabanında bir satır silme satır sürüm oluşturur.

  • Bir tetikleyici harekete, orada altında tetikleyici yürütme hareket için bir satır.

  • Çevrimiçi dizin oluşturma yordamı çalıştırırken, dizin oluşturma işlemi için bir satır yok.

  • Birden çok Active sonuçları kümesi (mars) oturumu etkin olduğunda, satır sürümleri erişen her hareket için bir satır yoktur.

Bu dinamik yönetimi görünüm sistem işlemleri dahil değildir.

Sözdizimi

sys.dm_tran_active_snapshot_database_transactions

Dönen Tablo

Sütun adı

Veri türü

Açıklama

transaction_idFROM

bigint

Hareket için atanan benzersiz tanımlama numarası. Hareket kodu öncelikle işlem kilitleme içinde hareket tanımlamak için kullanılır.

transaction_sequence_num

bigint

Hareketin sıra numarası. Bu başladığında, bir işlem için atanan benzersiz sıra numarasıdır. Sürüm kaydı oluşturmaz ve anlık tarama kullanmayın hareketleri hareket sıra numarası almayacaksınız. Daha fazla bilgi için, bkz. Understanding Row Versioning-based Isolation Levels.

commit_sequence_num

bigint

İşlem bittiğinde (tamamlama veya durdurur) gösteren sıra numarası. Etkin işlemler için değer null olur.

is_snapshot

int

0 = Anlık yalıtım hareket değildir.

1 = Anlık yalıtım hareket olduğunu.

session_id

int

Hareket başlatılmış oturumun Kımlığı.

first_snapshot_sequence_num

bigint

Anlık görüntü çekilirken aktif hareketleri düşük hareket sıra numarası. Yürütme, anlık hareket o zaman tüm etkin işlemler bir anlık görüntüsünü alır. NonSnapshot işlemleri için bu sütunda 0 gösterilir.

max_version_chain_traversed

int

İşlem tutarlı sürümünü bulmak için geçiş sürüm zinciri en fazla uzunluğu.

average_version_chain_traversed

real

Yaptırılır sürüm zincirleri sürümlerinde satır ortalama sayısı.

elapsed_time_seconds

bigint

Geçen zamandan beri hareketin hareket sıra numarası aldı.

İzinler

Sunucu üzerindeki VIEW server state izni gerektirir.

Açıklamalar

sys.dm_tran_active_snapshot_database_transactions raporları bir hareket sıra numarası (xsn) atanmış olan hareketleri. Hareketin ilk sürüm deposu eriştiğinde xsn atanır. Anlık görüntü yalıtım için etkinleştirilen veya satır sürüm oluşturmayı kullanarak kaydedilmiş yalıtım okunur bir veritabanında, bir xsn bir hareketle atandığında örnekler gösterir:

  • Bir işlem seri hale getirilebilir yalıtım düzeyi altında çalışıyorsa, hareketin ilk oluşturulacak satır sürümü neden olan bir update işlemi gibi bir deyimi yürütüldüğünde bir xsn atanır.

  • Bir hareket anlık yalıtım altında çalışıyorsa, bir select işlemi de dahil olmak üzere herhangi bir veri düzenleme dili (dml) deyimi yürütüldüğünde bir xsn atanır.

İşlem sırası numaraları seri olarak örneği içinde başlatıldığı her hareket için artan Veritabanı Altyapısı.

Hareketin sıra numaraları hakkında daha fazla bilgi için bkz: Understanding Row Versioning-based Isolation Levels.

Örnekler

Aşağıdaki örnek, her bir hareket sıra numarası (xsn) tarafından belirlenen dört eşzamanlı işlemler veritabanında READ_COMMITTED_SNAPSHOT ve ALLOW_SNAPSHOT_ISOLATION seçenek on olarak ayarlanmış olan çalıştırdığınız bir sınama senaryosu kullanır. Aşağıdaki işlemler çalıştırıyorsanız:

  • xsn 57, seri hale getirilebilir yalıtım altında bir güncelleştirme işlemidir.

  • 58 xsn xsn 57 ile aynıdır.

  • xsn 59 anlık yalıtım altında seçin bir işlemdir

  • xsn 60 aynı xsn-59 olarak.

Aşağıdaki sorgu yürütülür.

SELECT 
    transaction_id,
    transaction_sequence_num,
    commit_sequence_num,
    is_snapshot session_id,
    first_snapshot_sequence_num,
    max_version_chain_traversed,
    average_version_chain_traversed,
    elapsed_time_seconds
  FROM sys.dm_tran_active_snapshot_database_transactions;

SELECT 
    transaction_id,
    transaction_sequence_num,
    commit_sequence_num,
    is_snapshot session_id,
    first_snapshot_sequence_num,
    max_version_chain_traversed,
    average_version_chain_traversed,
    elapsed_time_seconds
  FROM sys.dm_tran_active_snapshot_database_transactions;

Sonuç kümesi buradadır.

transaction_id  transaction_sequence_num  commit_sequence_num
--------------  ------------------------  -------------------
9295            57                        NULL
9324            58                        NULL
9387            59                        NULL
9400            60                        NULL

is_snapshot  session_id   first_snapshot_sequence_num
-----------  -----------  ---------------------------
0            54           0
0            53           0
1            52           57
1            51           57

max_version_chain_traversed  average_version_chain_traversed
---------------------------  -------------------------------
0                            0
0                            0
1                            1
1                            1

elapsed_time_seconds
--------------------
419
397
359
333

transaction_id  transaction_sequence_num  commit_sequence_num
--------------  ------------------------  -------------------
9295            57                        NULL
9324            58                        NULL
9387            59                        NULL
9400            60                        NULL

is_snapshot  session_id   first_snapshot_sequence_num
-----------  -----------  ---------------------------
0            54           0
0            53           0
1            52           57
1            51           57

max_version_chain_traversed  average_version_chain_traversed
---------------------------  -------------------------------
0                            0
0                            0
1                            1
1                            1

elapsed_time_seconds
--------------------
419
397
359
333

Sonuçları aşağıdaki bilgileri değerlendiren sys.dm_tran_active_snapshot_database_transactions:

  • xsn 57: Bu işlem anlık yalıtım altında çalışmadığından is_snapshotdeğeri ve first_snapshot_sequence_num olan 0. transaction_sequence_numÇünkü bir ya da iki ALLOW_SNAPSHOT_ISOLATION veya READ_COMMITTED_SNAPSHOT veritabanı seçenek on olan bu hareketi için hareket sıra numarası atanmış olduğunu gösterir.

  • xsn-58: Bu işlem anlık yalıtım altında çalışmayan ve xsn 57 için aynı bilgileri geçerlidir.

  • xsn 59: Bu anlık yalıtım altında çalışan ilk etkin hareketidir. Bu işlem tarafından belirtildiği gibi önce xsn 57, kaydedilmiş verileri okur first_snapshot_sequence_num. Bu hareketi de bir satır için geçiş en büyük sürüm zinciri gösterir 1ve ortalama geçiş 1sürüm erişilen her satır için. Bu hareketleri xsn 57 ve 58 xsn xsn 60 değil satır güncellenmiştir ve kararlı olduğunu anlamına gelir.

  • xsn 60: Anlık yalıtım altında çalışan ikinci hareketi budur. Çıktı xsn 59 aynı bilgileri gösterir.

Ayrıca bkz.

Başvuru

set hareket yalıtım DÜZEYINE (Transact-sql)

Dinamik yönetimi görünümler ve işlevler (Transact-sql)

Hareket dinamik yönetimi görünümler ve işlevler (Transact-sql) ilgili

Diğer Kaynaklar

Using Row Versioning Base Isolation Levels

Understanding Row Versioning-based Isolation Levels

Choosing Row Versioning Based Isolation Levels