Udostępnij za pośrednictwem


Korzystanie z narzędzia informacje o sesja kontekstu

Informacje kontekstowe sesja aplikacjom do ustawiania wartości binarnych do 128 bajtów, które można się odwoływać w wielu instancji, procedur przechowywanych, wyzwalaczy lub funkcje zdefiniowane przez użytkownika na tej samej sesja.zestaw wartość kontekstu sesja przy użyciu instrukcja zestaw CONTEXT_INFO i pobrać go przy użyciu jednej z następujących czynności:

  • Funkcja CONTEXT_INFO.

  • The context_info columns in the sys.dm_exec_requests and sys.dm_exec_sessions dynamic management views, and the sys.sysprocesses compatibility view.

Informacje kontekstowe sesja różni się od Transact-SQL zmienne, których zakres jest ograniczony do bieżącego Transact-SQL partia, procedura przechowywana, wyzwalacza lub funkcja zdefiniowanej przez użytkownika. Informacje kontekstowe sesja może służyć do przechowywania informacji specyficznych dla poszczególnych użytkowników lub bieżącego stanu wniosku.To następnie można używać do kontrolowania logikę Transact-SQL instrukcje.

Funkcja CONTEXT_INFO jest preferowanym sposobem pobierania kontekstu sesja dla bieżącej sesja.Można także pobrać wartości w kontekście sesja dla wszystkich bieżących sesja i partii z context_info kolumnsys.dm_exec_requests or sys.dm_exec_sessions dynamicznego zarządzania widokami.Aby wybrać z tych widoków musi mieć uprawnienia SELECT i VIEW SERVER STATE.Te uprawnienia nie są wymagane, gdy używana jest funkcja CONTEXT_INFO.

Podstawowym zastosowaniem informacje kontekstowe sesja jest zestaw wartości, które mogą być utrwalone w wiele instancji na tej samej sesja.W poniższym przykładzie pokazano, ustawienie wartości, które 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 AdventureWorks;
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 informacje kontekstowe sesja

zestaw CONTEXT_INFO nie zostało jeszcze wykonane dla bieżącej sesja, przedstawione są następujące wartości sesja:

  • Funkcja CONTEXT_INFO zwraca wartość NULL.

  • The context_info kolumna values in the system views are zestaw to 128 bytes of binary zeros for the rows associated with the current sesja and request.

Po wykonaniu CONTEXT_INFO zestaw, nowa wartość jest natychmiast dostępny z następujących źródeł:

  • The CONTEXT_INFO funkcja:

    SELECT CONTEXT_INFO() AS MyCtxInfo;
    
  • The context_info kolumna in the sys.dm_exec_requests row associated with the current partia:

    SELECT context_info AS MyCtxInfo
    FROM sys.dm_exec_requests
    WHERE session_id = @@SPID
       AND request_id = CURRENT_REQUEST_ID();
    
  • The context_info kolumna in the sys.sysprocesses row associated with the current sesja:

    SELECT context_info AS MyCtxInfo
    FROM sys.sysprocesses
    WHERE spid = @@SPID;
    

Nowa wartość nie jest przenoszone na sys.dm_exec_sessions widoku do partia zawierający CONTEXT_INFO zestaw instrukcja zakończył działanie.Po zakończeniu pracy partia nowej wartości są umieszczane w wierszu, skojarzone z bieżącej sesja.

SELECT context_info AS MyCtxInfo
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;

W poniższym przykładzie pokazano, gdy wartość informacji kontekstu jest widoczny w systemie widoków lub funkcja CONTEXT_INFO nowej sesja:

-- 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 sesja i MARS

Wiele zestawów wyników aktywne (MARS) włączania aplikacji do uruchamiania wielu instancji lub żądania, w tym samym czas dla połączenia.

Podczas jednej partii na połączeniu MARS CONTEXT_INFO zestaw, nowa wartość kontekstu jest natychmiast dostępny z następujących źródeł:

  • Z CONTEXT_INFO funkcja, która jest uruchamiana w tym samym batch, zestaw wartość.

  • W wierszu sys.dm_exec_requests widok, który jest skojarzony z instancją, zestaw wartość.

Nowa wartość kontekstu nie są propagowane do następujących źródeł do partia ustawia wartość zostało zakończone działania:

  • Funkcja CONTEXT_INFO, które jest uruchamiane przez wsadowego innych niż partii, zestaw wartość.CONTEXT_INFO zwraca tylko nowe wartości w plikach wsadowych, które są uruchamiane po partii, zestaw wartość zostanie zakończone.

  • W wierszu sys.dm_exec_sessions widok, który jest skojarzony z instancją, zestaw wartość.