ceturtdiena, 2011. gada 4. augusts

Resursu bloķēšana- Application Locks

Raksts, kas domāts kā piezīmju lapiņa pašam.
SQL Server automātiski rūpējās par to, lai dati tiktu atbilstoši bloķēti dažādos lietošanas scenārijos atkarībā no tā ko darām un kādā tansakcijā tas notiek. Piemēram, kamēr dati tiek lasīti, aizliegt citiem šos datus mainīt, bet atļaut tos pašus datus lasīt. Vai, kamēr dati tiek mainīti, aizliegt tos lasīt.

Bet ko darīt, ja šādu ideju vajag realizēt pilnīgi citā scenārijā? Piemēram, atļaut tikai vienam lietotājam vienā laika momentā izpildīt saglabāto procedūru.

Šeit viens no variantiem (MSDN saitēs zemāk ir labi piemēri):
  • Nosaucam datu bāzes ietvaros unikālā, brīvi izvēlētā vārdā resursu, ko vēlamies slēg.
  • Izvēlamies kā vēlamies resursu slēgt (transakcijas vai sesijas ietvaros, cik ilgi gaidīt, ja resurss aizņemts, ..)
  • Vietās, kur jākontrolē resursa lietošana ievietojam pārbaudi, vai resursu var izmantot.
Izmantojamas divas procedūras + divas funkcijas:
sp_getapplock
sp_releaseapplock
 

Nav komentāru:

Ierakstīt komentāru