Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2016 (13.x) a novější
Azure SQL Database
azure SQL Managed Instance
koncový bod azure Synapse Analytics
SQL Analytics v Microsoft Fabric
Warehouse v Microsoft Fabric
Vrátí hodnotu zadaného klíče v kontextu aktuální relace. Hodnota je nastavena pomocí sp_set_session_context procedury.
Syntaxe
SESSION_CONTEXT(N'key')
Argumenty
"klíč"
Klíč načtené hodnoty. key je sysname.
Návratové typy
sql_variant
Návratová hodnota
Hodnota přidružená k zadanému klíči v kontextu relace nebo NULL
pokud pro tento klíč není nastavená žádná hodnota.
Povolení
Každý uživatel může přečíst kontext relace pro svoji relaci.
Poznámky
Chování MARS pro SESSION_CONTEXT
' je podobné jako chování CONTEXT_INFO
. Pokud dávka MARS nastaví pár klíč-hodnota, nová hodnota se nevrátí v jiných dávkách MARS ve stejném připojení, pokud nezačnou po dávce, která nastaví novou hodnotu dokončenou. Pokud je v připojení aktivních více dávek MARS, hodnoty nelze nastavit jako read_only
. To zabraňuje podmínkám časování a nedeterminismu o tom, jakou hodnotu vyhrává.
Příklady
Následující jednoduchý příklad nastaví hodnotu kontextu relace pro klíč user_id
na 4 a pak použije SESSION_CONTEXT
funkci k načtení hodnoty.
EXECUTE sp_set_session_context 'user_id', 4;
SELECT SESSION_CONTEXT(N'user_id');
Známé problémy
Problém | Datum zjištění | Stav | Datum vyřešení |
---|---|---|---|
K výjimce porušení přístupu (AV) může dojít u SESSION_CONTEXT funkce za určitých podmínek. Při spuštění funkce v rámci plánu paralelního spuštění při resetování relace pro opakované použití může dojít k výjimkám AV nebo nesprávným výsledkům SESSION_CONTEXT .Oprava, která byla zavedena v SQL Serveru 2019 (15.x) CU 14 k vyřešení nesprávného problému s výsledky v SESSION_CONTEXT rámci paralelních plánů, byla později nalezena, aby za určitých podmínek způsobovala výjimky AV.Pokud chcete tento problém zmírnit, můžete příznak trasování 11024 povolit jako příznak spuštění, globálního nebo trasování relace. Tento příznak trasování vynutí SESSION_CONTEXT , aby se sériově spustil, což mu brání v účasti v plánech paralelních dotazů.Platí pro: SQL Server 2019 (15.x) CU 14 a novější verze. |
leden 2022 | Má řešení |
Související obsah
- sp_set_session_context
- sp_set_session_context (Transact-SQL)
- CURRENT_TRANSACTION_ID (Transact-SQL)
- Zabezpečení na úrovni řádků
- CONTEXT_INFO (Transact-SQL)
- SET CONTEXT_INFO (Transact-SQL)