Megosztás a következőn keresztül:


SESSION_CONTEXT (Transact-SQL)

A következőkre vonatkozik: Az SQL Server 2016 (13.x) és újabb verziói Az Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics végpontja a Microsoft FabricWarehouse-ban a Microsoft FabricSQL Database-ben a Microsoft Fabricben

A megadott kulcs értékét adja vissza az aktuális munkamenet-környezetben. Az érték a sp_set_session_context eljárással van beállítva.

Transact-SQL szintaxis konvenciók

Szemantika

SESSION_CONTEXT(N'key')

Érvek

"kulcs"

A lekért érték kulcsa. a kulcsa sysname.

Visszatérési típusok

sql_variant

Visszaadott érték

A munkamenet-környezetben megadott kulccsal társított érték, vagy NULL ha nincs megadva érték az adott kulcshoz.

Engedélyek

Bármely felhasználó elolvashatja a munkamenet-környezetet a munkamenethez.

Megjegyzések

A MARS viselkedése SESSION_CONTEXTa következőhöz CONTEXT_INFOhasonló: . Ha egy MARS-köteg kulcs-érték párot állít be, az új érték nem lesz visszaadva az ugyanazon a kapcsolaton lévő többi MARS-kötegben, kivéve, ha azok az új értéket beállító köteg befejezése után kezdődtek. Ha több MARS-köteg aktív egy kapcsolaton, az értékek nem állíthatók be .read_only Ez megakadályozza a versenyfeltételeket és a nemdeterminizmust arról, hogy melyik érték nyer.

Példák

Az alábbi egyszerű példa a kulcs user_id munkamenet-környezeti értékét 4-re állítja, majd a SESSION_CONTEXT függvény használatával kéri le az értéket.

EXECUTE sp_set_session_context 'user_id', 4;

SELECT SESSION_CONTEXT(N'user_id');

Ismert problémák

Probléma Felderített dátum Státusz A megoldás dátuma
Hozzáférés-megsértés (AV) kivétel léphet fel a SESSION_CONTEXT függvénnyel bizonyos feltételek mellett. Előfordulhat, hogy AV-kivételek vagy helytelen eredmények jelennek meg, ha a SESSION_CONTEXT függvény párhuzamos végrehajtási terven belül fut, amikor a munkamenet újra felhasználható.

Később kiderült, hogy az SQL Server 2019 (15.x) CU 14-ben bevezetett javítás, amely a párhuzamos csomagokban előforduló hibás eredményproblémák SESSION_CONTEXT megoldására lett bevezetve, bizonyos feltételek mellett AV-kivételeket eredményezett.

A probléma megoldásához engedélyezheti az 11042 nyomkövetési jelzőt indítási, globális vagy munkamenet-nyomkövetési jelzőként. Ez a nyomkövetési jelző kényszeríti SESSION_CONTEXT a soros végrehajtást, megakadályozva, hogy párhuzamos lekérdezési tervekben vegyen részt.

A következőkre vonatkozik: SQL Server 2019 (15.x) CU 14 és újabb verziók.
Január 2022. Van áthidaló megoldás