Информацията за контекста няма обхват (в смисъл на обхвата на езиковите променливи) и е обвързана с продължителността на сесията. Веднъж зададена, информацията за контекста остава на зададената стойност, докато връзката се затвори (сесията прекъсне) или докато не бъде зададена нова стойност. Тъй като изпълнението на сесия е винаги последователно, няма въпрос на паралелност.
АКО зададете информацията за контекста в процедура, всеки тригер, изпълнен впоследствие в тази сесия, ще види новозададената стойност на информация за контекста. Задаването на стойността на потребителския идентификатор в контекстната информация, както предлагате, и използването й в тригери е типичният пример за използване на контекстна информация и е напълно безопасно по отношение на паралелността, тъй като по същество няма паралелност, за която да говорим. Ако планирате да зададете информацията за контекста в съхранена процедура и след това да разчитате на нея в тригер, който се изпълнява поради изтривания, възникнали в споменатата процедура, тогава вашият пакет все още не е завършен, така че според статията, която сте свързали, извличате информацията за conetxt от sys.dm_exec_requests
DMV или от CONTEXT_INFO()
функция. Той все още няма да бъде изпратен в sys.dm_exec_sessions
, което може да се случи само след като излезете от съхранената процедура и завършите всяко друго повикване в T-SQL пакета, изпратен до сървъра („заявката“).