Dela via


SESSION_CONTEXT (Transact-SQL)

gäller för: SQL Server 2016 (13.x) och senare Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Returnerar värdet för den angivna nyckeln i den aktuella sessionskontexten. Värdet anges med hjälp av proceduren sp_set_session_context .

Transact-SQL syntaxkonventioner

Syntax

SESSION_CONTEXT(N'key')

Argumentpunkter

"nyckel"

Nyckeln för det värde som hämtas. nyckeln är sysname.

Returtyper

sql_variant

Returvärde

Värdet som är associerat med den angivna nyckeln i sessionskontexten, eller NULL om inget värde har angetts för den nyckeln.

Behörigheter

Alla användare kan läsa sessionskontexten för sin session.

Anmärkningar

MARS-beteendet för SESSION_CONTEXTliknar det för CONTEXT_INFO. Om en MARS-batch anger ett nyckel/värde-par returneras inte det nya värdet i andra MARS-batchar på samma anslutning, såvida de inte startade efter att batchen som angav det nya värdet har slutförts. Om flera MARS-batchar är aktiva på en anslutning kan värden inte anges som read_only. Detta förhindrar konkurrensförhållanden och nondeterminism om vilket värde som vinner.

Exempel

Följande enkla exempel anger sessionskontextvärdet för nyckeln user_id till 4 och använder SESSION_CONTEXT sedan funktionen för att hämta värdet.

EXECUTE sp_set_session_context 'user_id', 4;

SELECT SESSION_CONTEXT(N'user_id');

Kända problemområden

Problematik Identifierat datum Läge Datum åtgärdat
Ett undantag för åtkomstöverträdelse (AV) kan inträffa med SESSION_CONTEXT funktionen under vissa villkor. Du kan stöta på AV-undantag eller felaktiga resultat när SESSION_CONTEXT funktionen körs inom en parallell körningsplan när sessionen återställs för återanvändning.

En korrigering, som introducerades i SQL Server 2019 (15.x) CU 14 för att åtgärda ett fel resultatproblem med SESSION_CONTEXT inom parallella planer, konstaterades senare orsaka AV-undantag under vissa förhållanden.

Du kan åtgärda det här problemet genom att aktivera Spårningsflagga 11024 som startflagga, global flagga eller sessionsspårningsflagga. Den här spårningsflaggan tvingar SESSION_CONTEXT att köras seriellt, vilket hindrar den från att delta i parallella frågeplaner.

Gäller för: SQL Server 2019 (15.x) CU 14 och senare versioner.
Januari 2022 Har lösning