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.