sql >> Databáze >  >> RDS >> Sqlserver

Jaký je rozsah CONTEXT_INFO v SQL Server?

Kontextové informace nemají žádný rozsah (ve smyslu rozsahu jazykových proměnných) a jsou vázány na dobu trvání relace. Po nastavení zůstanou kontextové informace na nastavené hodnotě, dokud se spojení neukončí (relace se neukončí) nebo dokud nebude nastavena nová hodnota. Protože provádění v relaci je vždy sekvenční, o souběžnosti nemůže být řeč.

POKUD nastavíte kontextové informace v proceduře, každý spouštěč následně spuštěný v této relaci uvidí nově nastavenou hodnotu kontextových informací. Nastavení hodnoty ID uživatele v kontextových informacích, jak navrhujete, a její použití ve spouštěčích je typickým příkladem použití kontextových informací a je naprosto bezpečné, pokud jde o souběžnost, protože v podstatě o žádné souběžnosti nelze mluvit. Pokud plánujete nastavit kontextové informace v uložené proceduře a pak se na ně spolehnout ve spouštěči, která se spouští kvůli odstraněním, ke kterým v uvedené proceduře dochází, pak vaše dávka ještě neskončila, takže podle článku, na který jste odkazovali, načtete informace conetxt z sys.dm_exec_requests DMV nebo z CONTEXT_INFO() funkce. Dosud nebude odeslán v sys.dm_exec_sessions , k tomu může dojít až poté, co opustíte uloženou proceduru a dokončíte jakékoli další volání v dávce T-SQL odeslané na server ('požadavek').



  1. Tabulka uzavření MySql nepodporuje duplicitní podkategorie pro různé rodiče

  2. Chyba SQL #1071 – zadaný klíč byl příliš dlouhý; maximální délka klíče je 767 bajtů

  3. Jak optimalizovat databázi tento dotaz ve velké databázi?

  4. Stromové řazení dat v SQL (Mysql)