Aracılığıyla paylaş


Kilit saat aşımı'nı özelleştirme

When an instance of the Microsoft SQL Server Database Engine 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 bir saat aşımı dönemine ve bir kaynak, veri erişim (ve büyük olasılıkla sonsuza kadar engellenmiş) girişimi dışında kilitleme önce kilitli olup olmadığını sınamak için bir yol yoktur.

Not

Içinde SQL Server, kullanın sys.dm_os_waiting_tasks dinamik yönetim görünümü bir işlem mi engelleniyor ve kimin engelliyor.' Ün önceki sürümlerinde SQL Server, kullanın sp_who sistem saklı yordamı.

LOCK_TIMEOUT ayarı bir deyim engellenmiş bir kaynağın bekleyeceği en fazla bir saat bir uygulama sağlar.Bir deyim LOCK_TIMEOUT ayarından daha uzun süre bekledi, engellenmiş deyim otomatik olarak iptal edilir ve hata iletisinin 1222 ((ingilizce)Lock request time-out period exceeded) uygulamaya döner. Herhangi bir hareket, deyim içeren ancak olmamasından döndürülmesine veya tarafından iptal edildi. SQL Server. Bu nedenle, uygulama hata iletisi 1222 yakalayabilir bir hata işleyicisi olması gerekir.Uygulamayı bir uygulama hata yakalamaz, bir işlem içinde tek bir deyim iptal edildi ve daha sonra işlem tablolarda hiçbir zaman çalıştırıldı ekstresinde bağlı olabilir, çünkü hataları oluşabilir unaware devam edebilirsiniz.

Hata iletisi 1222 yakalar bir hata işleyicisi uygulama durumu saat aşımı ve remedial, gibi eylem için bir uygulama sağlar: otomatik olarak engellenmiş deyim resubmitting veya tüm hareketi geri alma.

Geçerli LOCK_TIMEOUT ayarı belirlemek için , @@ LOCK_TIMEOUT işlev yürütün:

SELECT @@lock_timeout;
GO