Kilit zaman aşımı özelleştirme
When an instance of the Microsoft SQL Server Veritabanı Altyapısı cannot grant a lock to a transaction because another transaction already owns a conflicting lock on the resource, the first transaction becomes blocked waiting for the existing lock to be released.Varsayılan olarak, zorunlu saat aşımı saat ve kaynak, veri erişim (ve büyük olasılıkla sonsuza kadar bloke) girişimi dışında kilitleme önce kilitli olup olmadığını sınamak için hiçbir yolu yoktur.
Not
De SQL Server, kullanma sys.dm_os_waiting_tasks dinamik yönetim görünümü bir işlem olup engelleniyor ve kim engelliyor belirlemek için.Önceki sürümlerinde SQL Server, kullanma sp_who sistem saklı yordamı.
LOCK_TIMEOUT kümeting verir, uygulamaya küme bir deyim engellenen bir kaynağın bekleyeceği en fazla bir saat.Bir deyim LOCK_TIMEOUT ayarı daha uzun süre bekledi olduğunda, engellenmiş deyim otomatik olarak iptal edilir ve hata iletisi 1222 (Lock request time-out period exceeded) uygulama. için döndürülendeyim, ancak içeren herhangi bir işlem geri alındı veya tarafından iptal SQL Server.Bu nedenle, uygulama hata iletisi 1222 yakalayabilir bir hata işleyicisi olması gerekir.Bir uygulama hatayı yakalamalı, bir hareketin içinde tek bir deyim iptal edildi ve daha sonra hareket içindeki ifadeleri asla yürütüldü deyim bağlı olabilir çünkü hatalar oluşabilir uygulama unaware geçebilirsiniz.
Hata iletisi 1222 yakalar bir hata işleyicisi uygulayan sağlar saat aşımı durumu ve remedial yararlanmak bir uygulama eylem, örneğin: otomatik olarak engellenmiş deyim yeniden iletmeden veya tüm işlemi geri alınıyor.
Geçerli LOCK_TIMEOUT ayarını belirlemek için yürütmek @@ LOCK_TIMEOUT işlev:
SELECT @@lock_timeout;
GO