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