set hareket yalıtım DÜZEYINE (Transact-sql)

Kilitleme ve satır sürüm oluşturma davranışını denetleyen Transact-SQLdeyimleri bağlantı veren SQL Server.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

SET TRANSACTION ISOLATION LEVEL
    { READ UNCOMMITTED
    | READ COMMITTED
    | REPEATABLE READ
    | SNAPSHOT
    | SERIALIZABLE
    }
[ ; ]

Bağımsız değişkenler

  • KAYDEDİLMEYEN OKUMA
    Tablolar diğer işlemler tarafından güncellenmiştir, ancak henüz kararlı satırları okuyabilir belirtir.

    read UNCOMMITTED düzeyinde çalışan işlemler geçerli işlem tarafından okunan veri değiştirme gelen diğer hareketleri önlemek için paylaşılan kilitleri sayı değil. read UNCOMMITTED hareket de güncellenmiştir, ancak diğer işlemler tarafından taahhüt değil satırları okumaya gelen Cari işlem önleyen özel kilit tarafından engellenmez. Bu seçenek ayarlandığında, kirli okuma olarak adlandırılan kaydedilmemiş değişiklikler okumak mümkündür. Veri değerleri değiştirilebilir ve satırlar görünür veya işlem bitmeden önce veri kümesi yok. Bu seçenek tüm tablolarda select deyimleri: bir işlem nolock ayarı aynı etkiye sahiptir. Bu yalıtım düzeyleri en az kısıtlayıcı olduğunu.

    De SQL Server, da hareketleri kullanarak kaydedilmemiş veri değişiklikleri kirli okuma yapması korumaya çalışırken kilitleme çakışması küçültebilirsiniz:

    • read KAYDEDILMIŞ yalıtım düzeyi ile READ_COMMITTED_SNAPSHOT veritabanı seçenek on olarak ayarlayın.

    • Anlık görüntü yalıtım düzeyi.

  • KAYDEDİLEN OKUMA
    Tablolar güncellenmiştir, ancak diğer işlemler tarafından taahhüt değil veri okunamıyor belirtir. Bu kirli okuma önler. Veri nonrepeatable okuma hayali veri sonuçlanabilecek geçerli hareket içinde tek tek deyimleri arasındaki diğer işlemler tarafından değiştirilebilir. Bu seçenek SQL Servervarsayılan.

    read KAYDEDILMIŞ davranışını READ_COMMITTED_SNAPSHOT veritabanı seçeneği ayarına bağlıdır:

    • READ_COMMITTED_SNAPSHOT off (varsayılan) ayarlanmışsa, Veritabanı Altyapısıkullanır paylaşılan gelen satır değiştirme geçerli hareket bir okuma işlemi çalışırken diğer hareketleri engellemek için kilitleri. Paylaşılan kilitleri de diğer hareket tamamlanıncaya kadar diğer işlemler tarafından güncellenmiştir satırları okurken from deyimi bloğu. Paylaşılan kilit ne zaman çıkacak belirler. Sonraki satırda işlenmeden önce satır kilitleri serbest bırakılır. Sayfa kilitlemeleri sonraki sayfayı okurken ve deyimini tamamlandığında tablo kilitleri serbest bırakılır.

      [!NOT]

      READ_COMMITTED_SNAPSHOT on olarak ayarlanmışsa, Veritabanı Altyapısıkullanan satır sürüm oluşturma deyimi başlangıcında var gibi her deyimi ile işlem tutarlı anlık veri sunmak için. Kilitler, diğer işlemler tarafından güncelleştirmeleri verileri korumak için kullanılmaz.

      Anlık görüntü yalıtım FILESTREAM veri destekler. Anlık görüntü yalıtım modu altında bir işlemin herhangi bir deyimi tarafından okunan FILESTREAM veri hareketin başlangıcında var olan verinin sonucuna tutarlı sürümünü olacaktır.

    READ_COMMITTED_SNAPSHOT veritabanı seçeneği açık olduğunda, satır sürüm oluşturma için read KAYDEDILMIŞ yalıtım düzeyinde çalışan işlemler tek tek deyimleri yerine paylaşılan kilitleme isteği için READCOMMITTEDLOCK tablo ipucu kullanabilirsiniz.

    [!NOT]

    READ_COMMITTED_SNAPSHOT seçeneği ayarladığınızda, yalnızca alter database komutu yürütmeden bağlantının veritabanında izin verilir. alter database tamamlanana kadar veritabanındaki diğer açık bağlantı olmalıdır. Veritabanı tek kullanıcı modunda olması gerekmez.

  • YİNELENEBİLİR OKUMA
    Tablolar güncellenmiştir, ancak henüz başka işlemler tarafından işlenen verileri okuyamıyor ve diğer işlemler geçerli işlem tamamlanıncaya kadar geçerli hareket tarafından okunmuş verileri değiştirebilirsiniz belirtir.

    Paylaşılan kilitleri işlem her deyimi tarafından okunan tüm veri yerleştirilir ve hareket tamamlanıncaya kadar tutulur. Bu, geçerli işlem tarafından okunan satırları değiştirme gelen diğer hareketleri önler. Diğer hareketleri ifadeleri geçerli işlem tarafından verilen arama koşullarıyla eşleşen yeni satır ekleyebilirsiniz. Eğer deyimi geçerli hareketin ardından deneme yeni satırlara, hangi hayalet reads sonuç alır. Çünkü her deyimi sonunda yayımlanan yerine hareket sonuna paylaşılan kilitleri tutulur, eşzamanlılık varsayılan read KAYDEDILMIŞ yalıtım düzeyi düşüktür. Bu seçenek yalnızca gerekli olduğunda kullanın.

  • ANLIK GÖRÜNTÜ
    Bir işlemdeki herhangi bir deyimi tarafından okunan veri hareketin başlangıcında var olan verinin sonucuna tutarlı sürümünü olacağını belirtir. Hareketin yalnızca kararlı hareket başlamadan önce veri değişiklikleri tanıyabilir. Geçerli hareket başladıktan sonra diğer işlemler tarafından yapılan veri değişiklikleri, geçerli hareket içinde yürütülen deyimleri görünmez. Hareketin başlangıcında var ifadeleri bir harekette kaydedilmiş verileri anlık olsun sanki etkisidir.

    Ne zaman bir veritabanı kurtarılan dışında anlık hareketleri kilitleri veri okunurken isteyemedi. Veri okuma anlık hareketleri veri yazma diğer işlemleri engellemez. Veri yazma işlemleri sayfasından veri okuma anlık hareketleri engellemeyin.

    Döndürülüyor başka bir işlem tarafından kilitli verilerini okumak için bir girişimde yaptıysanız, bir veritabanı kurtarma geriye dönüş aşamasında kilit anlık hareketleri ister. Anlık görüntü hareket, işlem geri alındı o kadar engellenir. Sonra hemen verilmiş kilidi serbest bırakılır.

    Anlık görüntü yalıtım düzeyi kullanan bir işlem başlamadan önce ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği on olarak ayarlanmalıdır. ALLOW_SNAPSHOT_ISOLATION on her veritabanı anlık yalıtım düzeyini kullanan bir işlemde birden fazla veritabanlarındaki verileri erişirse, ayarlamanız gerekir.

    Bir işlem başka bir yalıtım düzeyi ile başlayan anlık görüntü yalıtım düzeyi ayarlayamazsınız; yapıyor, böylece durdurmak için harekete neden olur. Anlık görüntü yalıtım düzeyi bir hareket başlatır, başka bir yalıtım düzeyini değiştirin ve sonra anlık görüntüye geri. İlk kez verilere erişen bir hareket başlatır.

    Anlık görüntü yalıtım düzeyi altında çalışan bir işlem, hareket tarafından yapılan değişiklikleri görebilirsiniz. Örneğin, hareketin bir tabloda bir güncelleştirmeyi gerçekleştirir ve karşı aynı tablo select deyimi sorunları, değiştirilmiş verileri sonuç kümesinde eklenecektir.

    [!NOT]

    Anlık görüntü yalıtım modu altında bir işlemin herhangi bir deyimi tarafından okunan FILESTREAM veri var hareketin başlangıcında, deyimi değil başında veri işlem tutarlı sürümünü olacaktır.

  • SERİ HALE GETİRİLEBİLİR
    Aşağıdakileri belirtir:

    • Tablolar güncellenmiştir, ancak henüz başka işlemler tarafından işlenen verileri okunamıyor.

    • Diğer işlemler geçerli işlem tamamlanıncaya kadar geçerli hareket tarafından okunmuş verileri değiştirebilirsiniz.

    • Diğer hareketleri düşeceği önemli değerlere sahip yeni satırlar tuşları geçerli işlem tamamlanıncaya kadar herhangi deyimleri geçerli hareket içinde okunan aralığındaki ekleyemezsiniz.

    Arama koşullarını bir hareket içinde yürütülen her deyimi eşleşen anahtar değerleri aralığı kilitleri yerleştirilir. Bu güncelleştirme veya herhangi bir geçerli işlem tarafından yürütülen deyimleri için uygun herhangi bir satır ekleme diğer hareketleri engeller. Bu işlem ifadelerden birini ikinci kez yürütülür, aynı satır kümesini okuyacak demektir. Hareket tamamlanıncaya kadar aralığı kilitleri tutulur. Çünkü tüm aralıkları tuşları kilitler ve hareket tamamlanıncaya kadar kilit tutan en kısıtlayıcı yalıtım düzeyleri budur. Eşzamanlılık daha düşük olduğundan, yalnızca gerekli olduğunda bu seçeneği kullanın. Bu seçenek tüm tablolarda select deyimleri: bir işlem holdlock ayarı aynı etkiye sahiptir.

Açıklamalar

Bir anda yalıtım düzeyi seçenekleri yalnızca biri ayarlanabilir ve açıkça değiştirilir kadar bu bağlantı için ayarlanmış kalır. Tüm farklı kilitleme veya bir tablo için sürüm oluşturma davranışını deyiminin from yan tümcesinde tablo ipucu belirtmediği sürece belirtilen yalıtım düzeyi için kurallar çerçevesinde hareket içinde gerçekleştirilen işlemleri faaliyet okuyun.

Hareket izolasyon düzeyleri üzerinde okuma işlemleri alınan kilitlerin türünü tanımlayın. OKUMA kaydedilmiş veya yinelenebilir okuma için genellikle satır kilitleri, çok sayıda sayfa veya tablo satırları okuma tarafından başvurulan sayfa veya tablo kilitleri için satır kilitleri escalated, ancak alınan kilitleri paylaştı. It has been read sonra bir satır hareket tarafından değiştirilirse, satır korumak için özel bir kilit hareket eder ve hareket tamamlanıncaya kadar özel kilit korunur. Örneğin yinelenebilir okuma işlemi paylaşılan bir kilit bir satırda varsa ve sonra hareket satırını değiştirir, paylaşılan satırın kilit bir özel satır kilidi dönüşür.

Bir istisna, bir yalıtım düzeyini başka bir işlem sırasında istediğiniz zaman geçiş yapabilirsiniz. Anlık görüntü yalıtım için herhangi bir yalıtım düzeyini değiştirerek özel durum oluşur. Bunu yaparken, başarısız ve geri almak için harekete neden olur. Ancak, anlık görüntü yalıtım için başka bir yalıtım düzeyinde başlayan hareket değiştirebilirsiniz.

Bir işlem bir yalıtım düzeyini değiştirmek korunmaktadır sonra yeni bir düzeye kurallarına göre okunan başka kaynaklara değiştirdiğinizde. Değişiklikten önce okunan kaynaklar önceki düzeyine kurallarına göre korunmaya devam. Örneğin, bir hareket read KAYDEDILMIŞ SERIALIZABLE için değiştirdiyseniz, değişiklikten sonra alınan paylaşılan kilitleri şimdi hareket sonuna kadar tutulur.

Eğer nesne denetim döndüğünde set hareket yalıtım DÜZEYINE bir saklı yordam veya tetikleyiciyi, yayın nesnesi çağrıldığında yalıtım düzeyini düzeyine etkin sıfırlanır. YİNELENEBİLİR okuma ayarla toplu ve toplu sonra SERIALIZABLE için yalıtım düzeyini ayarlayan bir saklı yordam çağrıları, saklı yordam için toplu denetim döndüğünde, yalıtım düzeyi ayarı yinelenebilir okuma için döner.

[!NOT]

Kullanıcı tanımlı işlevler ve ortak dil çalışma zamanı (clr) kullanıcı tanımlı türler set hareket yalıtım DÜZEYINE yürütülemiyor. Ancak, tablo ipucu kullanarak yalıtım düzeyini ', geçersiz kılabilirsiniz. Daha fazla bilgi için, bkz. Tablo ipuçları (Transact-sql).

Kullandığınızda sp_bindsessioniki oturuma bağlamak için her oturum, yalıtım düzeyi ayarını korur. Bir oturumu yalıtım düzeyi ayarını değiştirmek için set hareket yalıtım DÜZEYINE kullanarak bağlı diğer oturumları ayarını etkilemez.

set hareket yalıtım DÜZEYINE yürütme veya çalışma süresi ve ayrıştırma zaman etkili olur.

Aşağıdaki yalıtım düzeyi altında çalışan yığınlar blok sorguları en iyi duruma getirilmiş toplu yükü işlemler:

  • ANLIK GÖRÜNTÜ

  • KAYDEDİLMEYEN OKUMA

  • OKUMA satır sürüm oluşturmayı kullanarak kaydedilmiş

Tersine, bu yalıtım düzeyleri altında çalışan sorguları en iyi duruma getirilmiş toplu yükü işlemler yığınlar engelleyin. Toplu yükleme işlemleri hakkında daha fazla bilgi için bkz: Toplu alma ve verme veri (SQL Server).

FILESTREAM etkin veritabanları aşağıdaki hareket izolasyon düzeyleri destekler.

Yalıtım düzeyi

Transact sql erişim

Dosya sistem erişimi

Kaydedilmeyen okuma

SQL Server 2012

Desteklenmeyen

Kaydedilen okuma

SQL Server 2012

SQL Server 2012

Yinelenebilir okuma

SQL Server 2012

Desteklenmeyen

Searializable

SQL Server 2012

Desteklenmeyen

Okuma kaydedilmiş anlık

SQL Server 2012

SQL Server 2012

Anlık görüntü

SQL Server 2012

SQL Server 2012

Örnekler

Aşağıdaki örnek kümeleri TRANSACTION ISOLATION LEVELoturumu için. Her Transact-SQLdeyimi, izler, SQL Servertüm paylaşılan kilitleri işlem sonuna kadar tutar.

USE AdventureWorks2012;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;
GO
SELECT * 
    FROM HumanResources.EmployeePayHistory;
GO
SELECT * 
    FROM HumanResources.Department;
GO
COMMIT TRANSACTION;
GO

USE AdventureWorks2012;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;
GO
SELECT * 
    FROM HumanResources.EmployeePayHistory;
GO
SELECT * 
    FROM HumanResources.Department;
GO
COMMIT TRANSACTION;
GO

Ayrıca bkz.

Başvuru

alter veritabanı (Transact-sql)

dbcc USEROPTIONS (Transact-sql)

select (Transact-sql)

Deyimiyle (Transact-sql) bırak

Tablo ipuçları (Transact-sql)