Aracılığıyla paylaş


Imleç kilitleme

In Microsoft SQL Server, the SELECT statement in a cursor definition is subject to the same transaction locking rules that apply to any other SELECT statement.Imleçler, ancak ek kümesi kaydırma kilit üzerinde bir imleç eşzamanlılık düzey'nin belirtimine göre kazanılması.

deyim, bir imleç tanımında dahil olmak üzere herhangi bir deyim tarafından alınan işlem kilitleri tarafından kontrol edilir:

  • Işlem yalıtım düzey ayarı bağlantı için.

  • FROM yan tümcesinde belirtilen tüm kilitleme ipuçları.

Bu kilit, imleçleri hem de bağımsız bir SELECT deyimi için Cari işlemin sonuna kadar tutulur.Ne zaman SQL Server çalışan autocommit modunda, tek tek her bir SQL deyim bir hareket olduğu ve deyim tamamlandığında kilitlerin serbest. If SQL Server Hareketin tamamlandığı veya geri kadar kilitlerin tutulduğu sonra açık veya örtülü işlem modunda çalışıyor.

Örneğin, bu iki için yapılan kilitleme Transact-SQL örnekleri olan temelde aynı:

/* Example 1 */
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
BEGIN TRANSACTION
GO
SELECT * FROM AdventureWorks.Sales.Store;
GO

/* Example 2 */
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
BEGIN TRANSACTION
GO
DECLARE abc CURSOR STATIC FOR
SELECT * FROM AdventureWorks.Sales.Store;
GO
OPEN abc
GO

işlem yalıtım düzey ayarlamak için yinelenebilir okuma, örnek 1 bağımsız SELECT deyiminde hem BILDIRMEK imleç, örnek 2'de bulunan bir deyim oluşturmak anlamına gelir, her satırda, okuma kilitleri paylaşmak ve paylaşım kilitleri, hareketin tamamlandığı veya geri kadar tutulur.

Kilit alınıyor

Imleçler bağımsız SELECT deyimi, alınan, hareket kilitlerin türünü ilgili olarak aynı kuralları uyacak karşın kilitlerin farklı zamanlarda alınmış.Satır alındığında bağımsız bir SELECT veya bir imleç tarafından oluşturulan kilitlerin her zaman alınmış.deyim yürütüldüğünde, bağımsız bir SELECT için tüm satırlar alınır.Imleçler, ancak imleç türüne bağlı olarak farklı zamanlarda satırları alın:

  • Sonucun tamamına statik imleçler almak küme saat imleç açıldığında.Bu, her sonuç satırı kilitler küme açık saat.

  • Anahtarlar, her sonuç satırı Keyküme-driven imleçler almak küme saat imleç açıldığında.Bu, her sonuç satırı kilitler küme açık saat.

  • Bunlar getirilen kadar (normal salt ileri imleçler dahil) dinamik imleçler satır almak değil.Kilitlerin satırları üzerinde alınan kadar bunlar getirilen değil.

  • Bunlar, kilitlerin sorgu iyileştiricisi tarafından seçilmiş yürütme planı bağlı aldığınızda hızlı salt ileri imleçler değişir.Bir dinamik plan seçilirse, satırları getirilen kadar hiçbir kilit alınır.Worktables oluşturulur ve satırlar worktable okuyun ve açık kilitli ise saat.

Imleçler, kendi eşzamanlılık belirtimleri, bazıları her getirme, satırlar üzerinde ek kilit oluşturmak da destekler.Bu kaydırma kilitlerin sonraki getirme operasyonu kadar veya hangisi ilk gelen imleç kapatılana kadar tutulur.Bu kilit, bağlantı seçeneği, yürütme üzerinde imleçler açık tutmak için ayarlanırsa, bir yürütme veya geri alma işlemi saklanacaktır.