Sp_getapplock nedir ve Xp_userlock

Procedure isminden de anlaşılacağı üzere  Application lock koymak için kullanılır. Burada ki amaç bir proceduremuz var ve bunu sadece bir uygulama kullansın farklı bir kullanıcının kullanmasın diyorsak tam size göre.

Aşağıdaki örnekte procedure oluşturuldu ve bu procedure içerisinde applock komutu kullanıldı.
 

CREATE PROC dbo.APPLcktestt

  AS

  BEGIN TRAN

      EXEC sp_getapplock @Resource = @key, @Lockmode = 'Exclusive'

 --Yazılacak T-SQL'i buraya yazabilirsiniz.   

      EXEC sp_releaseapplock @Resource = @key

  COMMIT

Örnek:

CREATE PROC dbo.APPLcktestt

  AS

  BEGIN TRAN

      EXEC sp_getapplock @Resource = @key, @Lockmode = 'Exclusive'

 select*from dbo.t_random

      EXEC sp_releaseapplock @Resource = @key

  COMMIT

 

Yukarıdaki sorguyu çalıştırdınız fakat APPLcktestt sp’sini başka bir kullanıcı sorguladığında xp_userlock göreceksiniz. Bunun sebebi yukarıdaki sorgunun sonucu ilk kullanıcıya dönmediğinden sizi locklamasıdır.

 


Bunun çözümü olarak sorguyu paralel olarak çalıştırabilirsiniz ya da instance seviyesinde maxdop’u değiştirebilirsiniz ya da sorguya index vs ekleyerek çözebilirsiniz.

Loading