sys.dm_tran_active_snapshot_database_transactions (Transact-SQL)
' De bir SQL Server örnek olarak, bu dinamik yönetim görünümü oluşturmak veya satır sürümü büyük olasılıkla tüm etkin işlemler için sanal bir tablo döndürür. Hareketleri bir veya daha çok aşağıdaki koşullardan biri için eklenmiştir:
Birini veya her ikisini ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT veritabanı seçeneklerini ON olarak ayarlandığında:
Anlık görüntü yalıtım düzey veya satır sürüm oluşturmayı kullanarak okundu olarak kaydedilmiş bir yalıtım düzey altında çalışan her işlem için bir satır vardır.
Bir satır sürüm geçerli veritabanında oluşturulmasına neden olan her hareket için bir satır vardır.Örneğin, güncelleştirme veya geçerli veritabanında bir satır silme satır sürüm hareket oluşturur.
Bir tetiği harekete geçirilir, tetikleyici yürütülüyor altında hareket için bir satır vardır.
Çevrimiçi bir dizin oluşturma yordamını çalıştırırken, dizin oluşturma hareket için bir satır vardır.
Birden çok Active sonuçlar kümesi (MARS) oturum etkin olduğunda, satır sürümleri eriştiği her hareket için bir satır vardır.
Bu dinamik yönetim görünümü, sistem işlemlerindeki içermez.
sys.dm_tran_active_snapshot_database_transactions
Dönen Tablo
sütun Name |
Veri türü |
Açıklama |
---|---|---|
transaction_id |
bigint |
Hareket için atanan benzersiz tanımlama numarası.Hareket KODU, öncelikle, işlem kilitleme işlemi tanımlamak için kullanılır. |
transaction_sequence_num |
bigint |
Hareketin sıra numarası.Bu başlatıldığında, bir işlem için atanan benzersiz bir seri numarasıdır.Sürüm kayıtlar oluşturmak ve anlık görüntü görüntü taramaları kullanmayın hareketleri bir işlem sıra numarası almazsınız.Daha fazla bilgi için bkz: Satır Güncelleştirme-based yalıtım düzeyleri anlama. |
commit_sequence_num |
bigint |
Sıra numarası ne zaman hareket (iptalleri veya durur) tamamlanır gösterir.Etkin işlemler için değer NULL olur. |
is_snapshot |
int |
0 = anlık görüntü görüntü bir yalıtım işlem değil. 1 = anlık görüntü görüntü bir yalıtım hareket mi. |
session_id |
int |
Hareketin başlatıldığı oturumun KIMLIĞI. |
first_snapshot_sequence_num |
bigint |
anlık görüntü görüntü çekilirken etkin hareketleri en düşük işlem sırası numarası.Yürütme üzerinde bir anlık görüntü hareketi, o anda anlık görüntü görüntü görüntüsünü tüm etkin işlemler alır.Bu sütun, nonsnapshot hareketlerinde 0 gösterir. |
max_version_chain_traversed |
int |
Işlem tutarlı sürümünü bulmak için geçiş sürüm zincirdeki en fazla uzunluğu. |
average_version_chain_traversed |
real |
Satır, geçiş sürüm zincirlerini sürümleri ortalama sayısı. |
elapsed_time_seconds |
bigint |
Hareket, işlem sıra numarası alınan bu yana geçen saat. |
İzinler
Sunucudaki SUNUCU DURUM VIEW iznine gerek duyar.
Remarks
sys.dm_tran_active_snapshot_database_transactions hareketin sıra numarası (XSN) atanmış olan hareketleri bildirir.Sürüm deposu işlem ilk kez eriştiğinde XSN atanır.anlık görüntü görüntü yalıtım için etkinleştirilmiş veya satır sürümü kullanılarak, kaydedilmiş yalıtım okuma bir veritabanında, bir hareket için bir XSN atanan zaman örnekleri göster:
Işlem seri hale getirilebilir yalıtım düzey altında çalışıyorsa, işlem ilk oluşturulması için bir satır sürüm neden olan bir UPDATE işlemi gibi bir deyim yürütüldüğünde bir XSN atanır.
Bir işlem anlık görüntü görüntü yalıtım altında çalışıyorsa, bir SELECT işlemi de dahil olmak üzere tüm veri işleme Dil (DML) deyim yürütüldüğünde bir XSN atanır.
Işlem sıra numaralarını örnek başlatıldığında her hareket için seri olarak artırılır Database Engine.
Işlem sırası numaraları hakkında daha fazla bilgi için bkz: Satır Güncelleştirme-based yalıtım düzeyleri anlama.
Örnekler
Aşağıdaki örnek dört eşzamanlı hareketler, her bir hareketin sıra numarası (XSN) tarafından tanımlanan ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT seçenekleri ON olarak küme olan bir veritabanında ç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.
XSN 58 XSN 57 ile aynıdır.
Bir seçme işlemdir anlık görüntü görüntü yalıtım altında XSN-59
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;
Here is the result set.
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
Aşağıdaki bilgiler sonuçlar değerlendirir. sys.dm_tran_active_snapshot_database_transactions:
xsn 57: Because this transaction is not running under snapshot isolation, the is_snapshot value and first_snapshot_sequence_num are 0.transaction_sequence_num shows that a transaction sequence number has been assigned to this transaction, because one or both ALLOW_SNAPSHOT_ISOLATION or READ_COMMITTED_SNAPSHOT database options are ON.
XSN-58: Bu işlem anlık görüntü görüntü yalıtım altında çalışan ve aynı bilgiler XSN 57 için geçerlidir.
XSN-59: Anlık görüntü yalıtım altında çalıştığı ilk etkin hareket budur. Bu işlem tarafından belirtildiği şekilde XSN 57 önce kaydedilmiş verileri okur. first_snapshot_sequence_num. Çıkış hareketi için de bir satır için geçiş en yüksek sürüm zincirdeki gösterir 1 ve ortalama geçiş 1 erişilen her satır için sürümü. Bu hareketleri XSN 57 XSN 58 ve XSN 60 olmayan satır değiştirilmiş ve kaydedilmiş anlamına gelir.
XSN-60: Bu anlık görüntü yalıtım altında çalışan ikinci hareketidir. Çıktı XSN 59 aynı bilgileri gösterir.
See Also