Aracılığıyla paylaş


Satır sürüm oluşturma tabanlı yalıtım düzeyleri kullanma

Satır sürüm oluşturma framework her zaman etkin olduğundan SQL Server, birden çok özellikleri. tarafından kullanılan veSatır sürüm oluşturma tabanlı yalıtım düzeyleri sağlayarak, yanı sıra tetikler yapılan değişiklikleri desteklemek için kullanılan, (mars) oturumlarını birden çok etkin sonuç kümeleri ve veri desteklemek için çevrimiçi dizin işlemleri için okur.

Satır sürüm oluşturma tabanlı yalıtım düzeys veritabanı etkin düzey.Uygulama erişimi nesneleri etkinleştirilmiş veritabanlarında sorguları aşağıdaki yalıtım düzeyleri kullanarak çalıştırabilirsiniz:

  • Okuma kaydedilmiş olan satır sürüm oluşturma ayarlayarak kullanır READ_COMMITTED_SNAPSHOT veritabanı seçeneği ON Aşağıdaki kod örneğinde gösterildiği gibi:

    ALTER DATABASE AdventureWorks2008R2
        SET READ_COMMITTED_SNAPSHOT ON;
    

    READ_COMMITTED_SNAPSHOT için veritabanı etkin olduğunda, okuma işlemleri anlamına gelir yapmak değil satır sürüm oluşturma okuma kaydedilmiş yalıtım düzey altında çalışan tüm sorgular kullanın blok güncelleştirme işlemleri.

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

    ALTER DATABASE AdventureWorks2008R2
        SET ALLOW_SNAPSHOT_ISOLATION ON;
    

    Anlık görüntü yalıtım altında çalışan bir işlem için anlık görüntü etkin veritabanındaki tabloları erişebilirsiniz.Anlık görüntü için etkinleştirilmiş tablolar erişmek için yalıtım düzey değiştirilmesi gerekir.Örneğin, aşağıdaki örnekte gösterildiği kod bir SELECT altında çalışırken iki tablo JOIN deyimanlık görüntü görüntü hareketi. Bir tablo içinde anlık görüntü yalıtım etkin bir veritabanına aittir.Zaman SELECT deyim anlık görüntü yalıtım altında çalışır, başarısız başarıyla yürütmek.

    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 aynı gösterir SELECT değiştirmek için değişiklik bildirimi işlem yalıtım düzey çok okunur kaydedilmiş.Bu değişiklik nedeniyle, SELECT 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;
    

Nasıl hakkında daha fazla bilgi için küme bir uygulama içinde yalıtım düzeyni görmek Hareket izolasyon düzeyleri ayarlama.

Hareketleri satır sürüm oluşturma tabanlı yalıtım düzeyleri kullanma sınırlamaları

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

  • READ_COMMITTED_SNAPSHOT içinde etkinleştirilemiyor tempdb, msdb, veya master.

  • Genel geçici tablolar depolanmış olan tempdb.Genel geçici tablolar anlık görüntü görüntü hareketi içinde erişirken, aşağıdakilerden birini gerçekleştirilmesi gerekir:

    • ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneğini ayarlamak tempdb.

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

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

    • Bir veritabanı salt okunur anlık görüntü hareket başladıktan sonra ancak anlık görüntü hareket veritabanına erişen önce yapılır.

    • Birden fazla veritabanlarındaki nesnelere erişme, veritabanı durumunu veritabanı kurtarma bir snapshot hareketi başladıktan sonra ancak anlık görüntü hareket veritabanına erişen önce oluştu bir şekilde değiştirildi.Örneğin: Veritabanı küme çevrimdışı ve çevrimiçi, autoclose ve açık veritabanı veya veritabanı ayırma ve iliştirme.

  • Dağıtılmış bölümlenmiş veritabanlarında, sorguları dahil olmak üzere dağıtılmış hareketleri anlık görüntü yalıtım altında desteklenmez.

  • SQL Server Sistem meta veriler birden çok sürümünü korumaz.Tablolar ve diğer veritabanı nesnelerini (dizinler, görünümleri, veri türleri, saklı yordamlar ve ortak dil çalışma zamanı işlevlerini) veri Tanım Dili (ddl) deyimleri meta veriler değiştirin.ddl deyim bir nesneyi değiştirir, nesnenin anlık yalıtım altında eşzamanlı referans anlık görüntü hareket başarısız olmasına neden olur.READ_COMMITTED_SNAPSHOT veritabanı seçeneği on olarak ayarlandığında okunur kaydedilen işlem bu sınırlama yoktur.

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

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

    anlık görüntü herhangi görüntüsünü etkin olduğunda hareket ALTER INDEX deyim yürütüldüğünde başvuruda bulunmaya çalışırsa bir hata alır HumanResources.Employee sonra tablo ALTER INDEX deyim yürütüldüğünde.Satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş hareketleri etkilenmez.

    Not

    bulk INSERT işlemleri, hedef tablo meta veriler (örneğin, sınırlama denetimleri devre dışı bırakmak) değişiklikler neden olabilir.Bu durumda, toplu erişilirken eşzamanlı anlık görüntü yalıtım hareketleri tablolar başarısız eklemiş olabilirsiniz.