Aracılığıyla paylaş


sys.dm_tran_active_snapshot_database_transactions (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'te SQL Veritabanı

Bir SQL Server örneğinde, bu dinamik yönetim görünümü, satır sürümlerini oluşturan veya potansiyel olarak erişen tüm aktif işlemler için sanal bir tablo döndürür. İşlemler aşağıdaki koşullardan biri veya birkaçını için dahil edilir:

  • ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT veritabanı seçenekleri ON'a ayarlandığında:

    • Her işlem için bir satır vardır; bu işlem anlık izolasyon seviyesinde veya satır sürüm kullanan okuma-taahhüdü izolasyon seviyesinde çalışır.

    • Her işlem için bir satır vardır ve bu satır mevcut veritabanında bir satır sürümü oluşturulur. Örneğin, işlem mevcut veritabanındaki bir satırı güncelleyerek veya silerek bir satır sürümü oluşturur.

  • Tetikleyici ateşlendiğinde, tetikleyicinin yürütüldiği işlem için bir satır vardır.

  • Çevrimiçi bir indeksleme prosedürü çalışırken, indeks oluşturan işlem için bir satır vardır.

  • Çoklu Aktif Sonuç Setleri (MARS) oturumu etkinleştirildiğinde, her işlem için satır sürümlerine erişen bir satır vardır.

Bu dinamik yönetim görünümü sistem işlemlerini içermez.

Uyarı

Bunu Azure Synapse Analytics veya Analytics Platform System (PDW) olarak adlandırmak için sys.dm_pdw_nodes_tran_active_snapshot_database_transactions adını kullanın. Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Sözdizimi

  
sys.dm_tran_active_snapshot_database_transactions  

Döndürülen Tablo

Sütun adı Veri türü Description
transaction_id bigint İşlem için atanmış benzersiz kimlik numarası. İşlem kimliği, öncelikle kilitleme işlemlerinde işlemi tanımlamak için kullanılır.
transaction_sequence_num bigint İşlem dizisi numarası. Bu, işlem başladığında ona atanan benzersiz bir dizi numarasıdır. Sürüm kayıtları üretmeyen ve anlık tarama kullanmayan işlemler işlem dizisi numarası almaz.
commit_sequence_num bigint İşlemin ne zaman bittiğini (commit veya stop) gösteren dizi numarası. Aktif işlemler için değer NULL'dur.
is_snapshot int 0 = Bir anlık izolasyon işlemi değildir.

1 = Bir anlık izolasyon işlemidir.
session_id int İşlemi başlatan oturumun kimliği.
first_snapshot_sequence_num bigint Bir anlık fotoğraf çekildiğinde aktif olan işlemlerin en düşük işlem dizisi numarası. Yürütme sırasında, bir anlık işlem o anda tüm aktif işlemlerin anlık görüntüsünü alır. Anlık olmayan işlemler için bu sütun 0 gösterir.
max_version_chain_traversed int İşlemsel olarak tutarlı versiyonu bulmak için geçilen sürüm zincirinin maksimum uzunluğu.
average_version_chain_traversed Gerçek Çaplı versiyon zincirlerinde geçilen ortalama sıra versiyon sayısı.
elapsed_time_seconds bigint İşlemin işlem dizisi numarasını aldığından bu yana geçen süre.
pdw_node_id int için geçerlidir: Azure Synapse Analytics, Analiz Platformu Sistemi (PDW)

Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı.

Permissions

SQL Server ve SQL Yönetilen Örneği'ne VIEW SERVER STATE izni gerekir.

SQL Veritabanı Temel,S0 ve S1 hizmet hedeflerinive elastik havuzlardaki veritabanları için, sunucu yöneticisi hesabı, Microsoft Entra yönetici hesabı veya ##MS_ServerStateReader##sunucu rolü üyeliği gereklidir. Diğer tüm SQL Veritabanı hizmet hedeflerinde, veritabanında VIEW DATABASE STATE izni veya ##MS_ServerStateReader## sunucu rolü üyeliği gereklidir.

SQL Server 2022 ve üzeri için izinler

Sunucuda SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.

Açıklamalar

sys.dm_tran_active_snapshot_database_transactions , bir işlem dizisi numarası (XSN) atanan işlemleri raporlar. XSN, işlem sürüm deposuna ilk eriştiğinde atanır. Satır sürümleme kullanılarak anlık görüntü izolasyonu veya okuma taahhüdü izolasyonu için etkinleştirilmiş bir veritabanında, örnekler bir işleme bir XSN atandığında gösterilir:

  • Bir işlem serileştirilebilir izolasyon seviyesinde çalışıyorsa, işlem bir satırlı sürüm oluşturulmasına neden olan UPDATE işlemi gibi bir ifadeyi ilk kez çalıştırdığında bir XSN atanır.

  • Bir işlem anlık izolasyon altında çalışıyorsa, herhangi bir veri işleme dili (DML) ifadesi, SELECT işlemi dahil olmak üzere, çalıştırıldığında bir XSN atanır.

İşlem dizisi numaraları, Veritabanı Motoru'nun bir örneğinde başlatılan her işlem için seri olarak artırılır.

Örnekler

Aşağıdaki örnek, her biri bir işlem dizisi numarası (XSN) ile tanımlanan dört eşzamanlı işlemin ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT seçeneklerinin ON olarak ayarlandığı bir veritabanında çalıştığı bir test senaryosunu kullanır. Aşağıdaki işlemler devam etmektedir:

  • XSN-57, serileştirilebilir izolasyon altında bir güncelleme işlemidir.

  • XSN-58, XSN-57 ile aynıdır.

  • XSN-59, anlık görüntü izolasyonu altında seçilmiş bir işlemdir

  • XSN-60, XSN-59 ile aynıdır.

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;  

Sonuç kümesi aşağıdadı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  

Aşağıdaki bilgiler sys.dm_tran_active_snapshot_database_transactions'in sonuçlarını değerlendirir:

  • XSN-57: Bu işlem anlık görüntü izolasyonu altında çalışmadığı için, is_snapshot değerler ve first_snapshot_sequence_num 'dir.0 transaction_sequence_num bu işlem için bir işlem dizisi numarası atanmış olduğunu gösterir, çünkü veritabanı seçeneklerinden biri veya ikisi ALLOW_SNAPSHOT_ISOLATION veya READ_COMMITTED_SNAPSHOT AKILIDIR.

  • XSN-58: Bu işlem anlık görüntü izolasyonu altında çalışmamaktadır ve XSN-57 için aynı bilgiler geçerlidir.

  • XSN-59: Bu, anlık görüntü izolasyonu altında çalışan ilk aktif işlemdir. Bu işlem, XSN-57'den önce taahhüt edilen verileri okur, bu veriler belirtildiği gibi first_snapshot_sequence_num. Bu işlemin çıktısı ayrıca bir satır için geçilen maksimum sürüm zincirini 1 gösterir ve erişilen her satır için bir versiyonun ortalamasını 1 aşmıştır. Bu, XSN-57, XSN-58 ve XSN-60 işlemlerinin satırları değiştirmediği ve commit yapmadığı anlamına gelir.

  • XSN-60: Bu, anlık görüntü izolasyonu altında çalışan ikinci işlemdir. Çıkış, XSN-59 ile aynı bilgiyi gösterir.

Ayrıca Bkz.

İŞLEM YALıTıM DÜZEYINI AYARLA (Transact-SQL)
Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
İşlemle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)