Aracılığıyla paylaş


Oturum bağlam bilgilerini kullanma

Oturum bilgileri sağlayan uygulamaları küme en fazla 128 birden çok toplu işlem, saklı yordamlar, Tetikleyiciler veya kullanıcı tanımlı işlevler aynı oturumda çalışan başvurulan bayt ikili değerleri.küme CONTEXT_INFO deyim kullanarak oturum içerik değeri ayarlayabilir ve aşağıdakilerden birini kullanarak alma:

  • CONTEXT_INFO işlev.

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

Oturum bilgileri olarak değişirTransact-SQLdeğişkenler, geçerli sınırlı, kapsamTransact-SQLtoplu iş iş iş, depolanmış yordam, tetikleyici veya kullanıcı tanımlı işlev.Oturum bilgileri her kullanıcı veya uygulama geçerli durumunu özgü bilgileri depolamak için kullanılır.Bunun ardından kullanılabilir denetleme mantığıTransact-SQLifadeler.

CONTEXT_INFO işlev geçerli oturum için oturum içeriği almak için önerilen yöntemdir.Tüm geçerli oturumlar ve toplu işlem tarafından oturum bağlamında değerleri alabilircontext_infosys.dm_exec_requests veya sys.dm_exec_sessions Dinamik yönetim görünümü. sütunlar Bu görüntülerden seçmek için SELECT ve VIEW SERVER durum izinlerinin olması gerekir.CONTEXT_INFO işlevini kullandığınızda, bu izinlerin gerekli değildir.

Oturum bilgileri birincil aynı oturum içinde birden çok toplu işlem kalıcı bir değer belirtmek için kullanılır.Aşağıdaki örnek, birkaç toplu işlem çalıştırıldıktan sonra başvurulabilir bir değer ayarı gösterir.

-- 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

Oturum içeriği bilgi değerleri

küme CONTEXT_INFO henüz geçerli oturum için çalıştırıldı değil, aşağıdaki oturum değerler bildirilir:

  • CONTEXT_INFO işlev NULL döndürür.

  • The context_info column values in the system views are set to 128 bytes of binary zeros for the rows associated with the current session and request.

küme CONTEXT_INFO yürütüldükten sonra yeni değeri aşağıdaki kaynaklardan hemen kullanılabilir:

  • The CONTEXT_INFO function:

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

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

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

İçin yeni değer yayılırsys.dm_exec_sessions küme CONTEXT_INFO deyim içeren toplu iş işlemini tamamlayana kadar çalışıyor. görünümü toplu iş iş iş tamamlandığında, yeni değeri geçerli bir oturum ile ilişkili satırda yer alır.

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

İçerik bilgi değeri sistem görünümleri veya CONTEXT_INFO işlev içinde görüntülenen yeni bir oturum açtığınızda, aşağıdaki örnekte gösterilmektedir:

-- 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;

Oturum bağlam bilgileri ve MARS

Çoklu etkin sonuç kümelerini (MARS), uygulamaların aynı anda aynı bağlantı birden çok toplu işlem veya istekleri çalışmasını sağlar.

Bir MARS bağlantı toplu işlemlerden birini küme CONTEXT_INFO çalışırken, yeni içerik değeri aşağıdaki kaynaklardan hemen kullanılabilir:

  • CONTEXT_INFO çalışan ile aynı işlevi, toplu iş iş küme değeri.

  • Satırsys.dm_exec_requests küme değerin. toplu iş iş işlemle ilişkili görünümü

Yeni içerik değeri için aşağıdaki kaynaklardan yayılır ayarlar toplu iş iş çalışması bitinceye kadar değil:

  • Toplu iş dışında bir toplu iş olarak çalıştırmak CONTEXT_INFO işlev, küme değeri.CONTEXT_INFO, değer, toplu iş iş iş tamamlandıktan sonra başlatılan toplu iş iş olarak yalnızca yeni bir değer döndürür.

  • Satırsys.dm_exec_sessions küme değerin. toplu iş iş işlemle ilişkili görünümü