Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Retourneert de waarde van de opgegeven sleutel in de huidige sessiecontext. De waarde wordt ingesteld met behulp van de sp_set_session_context procedure.
Transact-SQL syntaxis-conventies
Syntaxis
SESSION_CONTEXT(N'key')
Argumenten
'sleutel'
De sleutel van de waarde die wordt opgehaald. sleutel is sysname.
Retourtypen
sql_variant
Retourwaarde
De waarde die is gekoppeld aan de opgegeven sleutel in de sessiecontext of NULL
als er geen waarde is ingesteld voor die sleutel.
Machtigingen
Elke gebruiker kan de sessiecontext voor de sessie lezen.
Opmerkingen
Het MARS-gedrag voor SESSION_CONTEXT
' is vergelijkbaar met die van CONTEXT_INFO
. Als een MARS-batch een sleutel-waardepaar instelt, wordt de nieuwe waarde niet geretourneerd in andere MARS-batches op dezelfde verbinding, tenzij deze zijn gestart na de batch die de nieuwe waarde heeft ingesteld. Als meerdere MARS-batches actief zijn op een verbinding, kunnen waarden niet worden ingesteld als read_only
. Dit voorkomt racevoorwaarden en niet-determinisme over welke waarde wint.
Voorbeelden
In het volgende eenvoudige voorbeeld wordt de sessiecontextwaarde voor sleutel user_id
4 ingesteld en wordt vervolgens de SESSION_CONTEXT
functie gebruikt om de waarde op te halen.
EXECUTE sp_set_session_context 'user_id', 4;
SELECT SESSION_CONTEXT(N'user_id');
Bekende problemen
Probleem | Datum ontdekt | Toestand | Datum opgelost |
---|---|---|---|
Er kan een AV-uitzondering (Access Violation) optreden met de SESSION_CONTEXT functie onder bepaalde voorwaarden. Er kunnen AV-uitzonderingen of verkeerde resultaten optreden wanneer de SESSION_CONTEXT functie wordt uitgevoerd binnen een parallel uitvoeringsplan wanneer de sessie opnieuw wordt ingesteld voor hergebruik.Een oplossing, die is geïntroduceerd in SQL Server 2019 (15.x) CU 14 om een probleem met onjuiste resultaten in SESSION_CONTEXT parallelle plannen op te lossen, is later vastgesteld dat AV-uitzonderingen onder bepaalde voorwaarden worden veroorzaakt.U kunt dit probleem oplossen door traceringsvlag 11042 in te schakelen als opstart-, globale of sessietraceringsvlag. Deze traceringsvlag dwingt SESSION_CONTEXT om serieel uit te voeren, waardoor deze niet kan deelnemen aan parallelle queryplannen.Van toepassing op: SQL Server 2019 (15.x) CU 14 en hoger. |
Januari 2022 | Heeft een tijdelijke oplossing |