In SQL Server kunt u de sp_set_session_context
opgeslagen procedure om sleutel/waarde-paren in de sessiecontext in te stellen.
Deze sleutel/waarde-paren blijven vervolgens in uw sessiecontext totdat uw verbinding met SQL Server wordt gesloten. U kunt deze waarden gebruiken in opgeslagen procedures en andere T-SQL-code gedurende de hele duur van uw sessie.
Deze methode voor het onderhouden van de sessiestatus werd voor het eerst geïntroduceerd in SQL Server 2016. Vóór die release zou u SET CONTEXT_INFO
moeten gebruiken. , die een vergelijkbare, maar veel beperktere manier biedt om de sessiestatus op te slaan.
Voorbeeld 1 – Stel de waarde in
Hier is een voorbeeld om te demonstreren hoe sp_set_session_context
te gebruiken om een sleutel/waarde-paar in te stellen.
EXEC sp_set_session_context @key = N'user_id', @value = 15;
U kunt ook de volgende syntaxis gebruiken:
EXEC sp_set_session_context 'user_id', 15;
Er is ook een optionele alleen-lezen vlag die u kunt instellen. Zie hieronder voor een voorbeeld.
Voorbeeld 2 – Lees de waarde
U kunt de SESSION_CONTEXT()
. gebruiken functie om de waarde van een sleutel te lezen.
Hier leest u hoe u de waarde kunt lezen die ik in het vorige voorbeeld heb ingesteld.
SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Resultaat:
+-----------+ | user_id | |-----------| | 15 | +-----------+
Voorbeeld 3 – Werk de waarde bij
U kunt de waarde bijwerken, zolang u deze niet als alleen-lezen hebt opgegeven.
EXEC sp_set_session_context 'user_id', 73; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Resultaat:
+-----------+ | user_id | |-----------| | 73 | +-----------+
Voorbeeld 4 – Instellen op alleen-lezen
Zoals vermeld, is er ook een optionele alleen-lezen vlag die u kunt instellen. Een waarde van 1
zet het op alleen-lezen, en een waarde van 0
(de standaardinstelling) is niet alleen-lezen.
Als u dit instelt op alleen-lezen, kunt u de waarde niet bijwerken zonder de verbinding met SQL Server te verbreken en opnieuw te verbinden.
Hier is een voorbeeld van het instellen van de alleen-lezen-vlag.
EXEC sp_set_session_context @key = N'user_id', @value = 15, @read_only = 1; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Resultaat:
+-----------+ | user_id | |-----------| | 15 | +-----------+
Laten we nu proberen de waarde te veranderen:
EXEC sp_set_session_context 'user_id', 73;
Resultaat:
Msg 15664, Level 16, State 1, Line 1 Cannot set key 'user_id' in the session context. The key has been set as read_only for this session.