sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er omfanget af CONTEXT_INFO i SQL Server?

Kontekstinfo har intet omfang (i betydningen sprogvariabler omfang) og er bundet til sessionens levetid. Når den er indstillet, forbliver kontekstinformationen ved den indstillede værdi, indtil forbindelsen lukkes (sessionen afsluttes), eller indtil en ny værdi er indstillet. Da udførelse på en session altid er sekventiel, er der ikke tale om samtidighed.

HVIS du indstiller kontekstoplysningerne i en procedure, vil enhver trigger, der efterfølgende udføres på den session, se den nyligt indstillede kontekstinfoværdi. At indstille bruger-id-værdien i kontekstinfoen, som du foreslår, og bruge den i triggere er det typiske eksempel på kontekstinfobrugen og er helt sikkert i forhold til samtidighed, da der dybest set ikke er nogen samtidighed at tale om. Hvis du planlægger at indstille kontekstoplysningerne i en lagret procedure og derefter stole på den i en trigger, der kører på grund af sletninger, der forekommer i den nævnte procedure, så er din batch ikke færdig endnu, så ifølge den artikel, du linkede, henter du conetxt-oplysningerne fra sys.dm_exec_requests DMV eller fra CONTEXT_INFO() fungere. Den vil endnu ikke blive pushet i sys.dm_exec_sessions , det kan kun ske, når du har afsluttet den lagrede procedure og afsluttet ethvert andet opkald i T-SQL-batchen sendt til serveren ('anmodningen').



  1. CTE returnerer fejl

  2. Læs char,double,int mønster fra streng i sql

  3. TSQL - Tilføj kolonne til alle tabeller i en database [ Markøreksempel]

  4. sql overordnet underordnet træ med sorteringsrækkefølge