Korzystając z informacji kontekstu sesji
Informacje kontekstowe sesja umożliwia aplikacjom zestaw wartości binarnych maksymalnie 128 bajtów, których można się odwoływać w wielu instancji, procedur przechowywanych, wyzwalaczy lub funkcji zdefiniowanej przez użytkownika na tej samej sesja.zestaw wartość kontekście sesja za pomocą instrukcja CONTEXT_INFO USTAWIĆ i pobrać go przy użyciu jednej z następujących czynności:
Funkcja CONTEXT_INFO.
context_info Kolumn w sys.dm_exec_requests i sys.dm_exec_sessions Widoki dynamiczne zarządzanie i sys.sysprocesses Widok zgodności.
Informacje kontekstowe sesji różni się od Transact-SQL zmienne, których zakres jest ograniczony do bieżącego Transact-SQL partia, procedura składowana, wyzwalacza lub funkcja zdefiniowanej przez użytkownika.Informacje kontekstowe sesji można przechowywać informacje specyficzne dla każdego użytkownika lub bieżący stan aplikacji.To następnie służą do kontrolowania logikę Transact-SQL instrukcji.
Funkcja CONTEXT_INFO jest preferowanym sposobem pobierania kontekstu sesja dla bieżącej sesja.Można także pobrać wartości kontekstu sesja dla wszystkich bieżących sesja i instancje z context_info kolumn w sys.dm_exec_requests lub sys.dm_exec_sessions dynamiczne zarządzanie widokami.Aby wybrać z tych widoków wymaga uprawnienia SELECT i WYŚWIETL stan serwera.Uprawnienia te nie są wymagane, po użyciu funkcja CONTEXT_INFO.
Podstawowym zastosowaniem informacje kontekstu sesja jest zestaw wartość mogą być pozostawione przez wiele instancji na tej samej sesja.W poniższym przykładzie wartość można odwoływać się po uruchomieniu kilka partii.
-- Set context information at start.
SET CONTEXT_INFO 0x125666698456;
GO
-- Perform several nonrelated batches.
EXEC sp_helpfile;
GO
USE AdventureWorks2008R2;
GO
SELECT Name
FROM Production.Product
WHERE Name LIKE (N'Metal%')
ORDER BY ProductID;
GO
-- Select the context information set several batches earlier.
SELECT CONTEXT_INFO();
GO
Wartości informacji kontekstu sesji
Ustaw CONTEXT_INFO nie ma jeszcze wykonane dla bieżącej sesja, przedstawione są następujące wartości sesja:
Funkcja CONTEXT_INFO zwraca wartość NULL.
context_info Są wartości z kolumn w widokach systemu zestaw do 128 bajtów binarnych zer dla wierszy skojarzonych z bieżącej sesja i żądania.
Po wykonaniu USTAWIĆ CONTEXT_INFO nowa wartość jest natychmiast dostępne z następujących źródeł:
CONTEXT_INFO funkcja:
SELECT CONTEXT_INFO() AS MyCtxInfo;
context_info kolumna w sys.dm_exec_requests wiersz skojarzony z bieżącym partia:
SELECT context_info AS MyCtxInfo FROM sys.dm_exec_requests WHERE session_id = @@SPID AND request_id = CURRENT_REQUEST_ID();
context_info kolumna w sys.sysprocesses wiersz skojarzony z bieżącej sesja:
SELECT context_info AS MyCtxInfo FROM sys.sysprocesses WHERE spid = @@SPID;
Nowa wartość nie są propagowane do sys.dm_exec_sessions Widok do instancji, która zawiera zestaw CONTEXT_INFO instrukcja zakończył działanie.Po zakończeniu partia, nowa wartość jest umieszczana w wiersz skojarzony z bieżącej sesja.
SELECT context_info AS MyCtxInfo
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;
Poniższy przykład przedstawia po nowej sesja wartości informacji kontekstu jest widoczne w systemie widoków lub funkcja CONTEXT_INFO:
-- Set a context value before the batch starts.
SET CONTEXT_INFO 0x9999
GO
-- Set a new context value in the batch.
SET CONTEXT_INFO 0x8888
-- Shows the new value available in the
-- sys.dm_exec_requests view while still in the batch.
SELECT context_info as RequestCtxInfoInBatch
FROM sys.dm_exec_requests
WHERE session_id = @@SPID
AND request_id = CURRENT_REQUEST_ID();
-- Shows the new value available from the
-- CONTEXT_INFO function while still in the batch.
SELECT CONTEXT_INFO() AS FuncCtxInfoInBatch;
-- Shows that the sys.dm_exec_sessions view still
-- returns the old value in the batch.
SELECT context_info AS SessCtxInfoInBatch
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;
-- Shows the new value available in the
-- sys.sysprocesses view while still in the batch.
SELECT context_info AS ProcsCtxInfoInBatch
FROM sys.sysprocesses
WHERE spid = @@SPID;
-- End the batch.
GO
-- Shows that the sys.dm_exec_sessions view now
-- returns the new value.
SELECT context_info AS SessCtxInfoAfterBatch
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;
Informacje kontekstowe sesji i MARS
Wiele zestawów wyników active (MARS) umożliwić uruchamianie wielu instancji lub żądania, w tym samym aplikacji czas dla połączenia.
Jednej partii na połączeniu MARS działa CONTEXT_INFO ustaw wartość nowego kontekstu jest natychmiast dostępne z następujących źródeł:
Z CONTEXT_INFO funkcja, która jest uruchamiana w tej samej partia, zestaw wartości.
W wierszu sys.dm_exec_requests Widok skojarzony z partii, zestaw wartość.
Aż zakończeniu partia, który ustawia wartość nowej wartości kontekstu nie są propagowane do następujących źródeł:
Funkcja CONTEXT_INFO, uruchamianego przez partię innych niż partia, zestaw wartości.CONTEXT_INFO zwraca tylko nową wartość w partia, które są uruchamiane po partia, zestaw wartość zostanie zakończone.
W wierszu sys.dm_exec_sessions Widok skojarzony z partii, zestaw wartość.