Aracılığıyla paylaş


Satır Güncelleştirme tabanlı yalıtım düzeyleri kullanma

The row versioning framework is always enabled in Microsoft SQL Server, and is used by multiple features.Satır sürüm tabanlı bir yalıtım düzeyi sağlayan yanı sıra Tetikleyicileri yapılan desteklemek için kullanılan, (MARS) oturumu etkin olan birden çok sonuç ayarlar ve veri desteklemek için ONLINE dizin işlemleri için okur.

Satır sürümü tabanlı izolasyon düzeyleri veritabanı düzeyinde etkindir.Herhangi bir uygulama erişimi nesneleri etkin veritabanlarındaki aşağıdaki yalıtım düzeyi'ni kullanarak sorgularını çalıştırabilirsiniz:

  • Okuma için kabul edilen, satır sürümü aşağıdaki kod örneğinde gösterildiği gibi açık veritabanı READ_COMMITTED_SNAPSHOT seçeneği ayarlayarak kullanır:

    ALTER DATABASE AdventureWorks
        SET READ_COMMITTED_SNAPSHOT ON;
    

    Veritabanı için READ_COMMITTED_SNAPSHOT etkinleştirildiğinde, tüm sorgular, okuma işlemleri anlamına gelir. engellenmesine okuma kaydedilmiş yalıtım düzey kullanmak satır sürümü altında çalışan işlemleri güncelleştirin.

  • Aşağıdaki kod örneğinde gösterildiği gibi ON ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneğini ayarlayarak anlık görüntü görüntü yalıtım:

    ALTER DATABASE AdventureWorks
        SET ALLOW_SNAPSHOT_ISOLATION ON;
    

    Anlık görüntü yalıtım altında çalışan BIR işlem, anlık görüntü için etkin veritabanı tablolarında erişebilirler.Anlık görüntü için etkinleştirilmiş tablolar erişmek için , yalıtım düzey değiştirilmelidir.Örneğin, aşağıdaki kod örneği, anlık görüntü görüntü bir hareket altında çalışırken iki tabloyu birleştiren bir deyim gösterir.Bir tablo içinde anlık görüntü görüntü yalıtım etkin bir veritabanına aittir.deyim anlık görüntü görüntü yalıtım altında çalıştırıldığında yürütülecek başarıyla başarısız olur.

    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
    BEGIN TRAN
        SELECT t1.col5, t2.col5
            FROM Table1 as t1
            INNER JOIN SecondDB.dbo.Table2 as t2
                ON t1.col1 = t2.col2;
    

    Aşağıdaki kod örneği, okuma-kaydedilmiş için işlem yalıtım düzey değiştirmek için değiştirilmiş aynı deyim gösterir.Bu değişiklik, SELECT nedeniyle deyim başarıyla yürütür.

    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
    BEGIN TRAN
        SELECT t1.col5, t2.col5
            FROM Table1 as t1
            WITH (READCOMMITTED)
            INNER JOIN SecondDB.dbo.Table2 as t2
                ON t1.col1 = t2.col2;
    

Bir uygulamadaki yalıtım düzey ayarlama hakkında daha fazla bilgi için bkz: Işlem yalıtım düzeyleri ayarlama.

Satır Güncelleştirme tabanlı yalıtım düzeyleri kullanarak işlem sınırlamaları

Satır sürüm tabanlı bir yalıtım düzeyi ile çalışırken, aşağıdaki kısıtlamaları göz önünde bulundurun:

  • Içinde READ_COMMITTED_SNAPSHOT etkinleştirilemez. tempdb, msdb, or Yönetici.

  • Saklanan genel geçici tablolar tempdb.Bir anlık görüntü hareketi içinde genel geçici tablolar erişirken, aşağıdakilerden birini olmasý gerekir:

    • ON ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneğini küme tempdb.

    • Bir yalıtım ipucu deyim için yalıtım düzey değiştirmek için kullanın.

  • Anlık görüntü hareketlerin ne zaman başarısız olur:

    • Veritabanı salt okunur anlık işlem başladıktan sonra ancak anlık görüntü hareket, veritabanına erişir önce yapılır.

    • Birden çok veritabanlarından nesnelere erişim, bir veritabanı durumunu veritabanı kurtarma bir snapshot hareketi başlattıktan sonra ancak anlık görüntü hareket, veritabanına erişir önce oluştuğunu şekilde değiştirildi.Örneğin: veritabanı olan küme OFFLINE sonra ONLINE, autoclose ve açık veritabanı veya veritabanı ayırma ve iliştirme.

  • Dağıtılmış işlemler, gönderilen sorgular da dahil, dağıtılmış bölümlendirilmiş veritabanlarında, anlık görüntü yalıtım altında desteklenmez.

  • SQL Server Sistem meta veriler birden fazla kopyasını saklamaz.veri tanımlama dili (DDL) deyimleri tabloları ve diğer veritabanı nesnelerini (dizinler, görünümleri, veri türleri, saklı yordamlar ve ortak dil çalışma zamanı işlevlerini), meta veriler değiştirin.Nesne bir DDL deyim değiştirir, eşzamanlı bir anlık görüntü yalıtım altında nesnesine başvuru anlık hareket başarısız olmasına neden olur.Okundu olarak kaydedilen işlem READ_COMMITTED_SNAPSHOT veritabanı seçeneği AÇıK olduğunda bu kısıtlamaya sahip değilsiniz.

    Örneğin, bir veritabanı yöneticisi aşağıdaki ALTER INDEX deyimini yürütür.

    USE AdventureWorks;
    GO
    ALTER INDEX AK_Employee_LoginID
        ON HumanResources.Employee REBUILD;
    GO
    

    Başvuru çalışırsa ALTER INDEX deyim yürütüldüğünde etkin olan tüm anlık görüntü görüntü bir hata alır HumanResources.Employee tablo ALTER INDEX deyim yürütüldükten sonra. Okuma için kabul edilen hareketleri satır sürüm oluşturmayı kullanarak bu açıktan etkilenmez.

    Not

    Operasyonlar BULK INSERT tablo meta veriler (örneğin, kısıtlama denetimlerini devre dışı bırakırken) hedef değişiklikler neden olabilir.Bu durumda toplu erişirken eşzamanlı anlık görüntü görüntü yalıtım hareketleri tabloları başarısızlık eklenir.