Aracılığıyla paylaş


SESSION_CONTEXT (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsSQL analiz uç noktası Microsoft Fabric'teki Microsoft FabricSQL veritabanında Microsoft Fabric'te

Geçerli oturum bağlamında belirtilen anahtarın değerini döndürür. Değer , sp_set_session_context yordamı kullanılarak ayarlanır.

Transact-SQL söz dizimi kuralları

Sözdizimi

SESSION_CONTEXT(N'key')

Tartışmalar

'key'

Alınan değerin anahtarı. anahtarsysname'dir.

Dönüş türleri

sql_variant

Dönüş değeri

Oturum bağlamında belirtilen anahtarla ilişkili değer veya NULL bu anahtar için hiçbir değer ayarlanmadı.

İzinler

Herhangi bir kullanıcı, oturumlarının oturum bağlamını okuyabilir.

Açıklamalar

' için SESSION_CONTEXTMARS davranışı, ile benzerdir CONTEXT_INFO. MARS toplu işlemi bir anahtar-değer çifti ayarlarsa, yeni değeri ayarlayan toplu işlem tamamlandıktan sonra başlatılmadığı sürece yeni değer aynı bağlantıdaki diğer MARS toplu işlemlerinde döndürülemez. Bir bağlantıda birden çok MARS toplu işlemi etkinse, değerler olarak read_onlyayarlanamaz. Bu, yarış koşullarını ve hangi değerin kazandığı konusunda belirsizliği önler.

Örnekler

Aşağıdaki basit örnek, anahtarın user_id oturum bağlam değerini 4 olarak ayarlar ve ardından değerini almak için işlevini kullanır SESSION_CONTEXT .

EXECUTE sp_set_session_context 'user_id', 4;

SELECT SESSION_CONTEXT(N'user_id');

Bilinen sorunlar

Sorun Bulunan tarih Statü Çözümlenme tarihi
Belirli koşullar altında işlevde SESSION_CONTEXT Erişim İhlali (AV) özel durumu oluşabilir. Oturum yeniden kullanım için sıfırlandığında SESSION_CONTEXT işlev paralel yürütme planı içinde çalıştığında AV özel durumları veya yanlış sonuçlarla karşılaşabilirsiniz.

SQL Server 2019 (15.x) CU 14'te paralel planlar içinde yanlış bir sonuç sorununu SESSION_CONTEXT gidermek için kullanıma sunulan bir düzeltmenin daha sonra belirli koşullar altında AV özel durumlarına neden olduğu bulundu.

Bu sorunu azaltmak için, başlangıç, genel veya oturum izleme bayrağı olarak izleme bayrağı 11042'yi etkinleştirebilirsiniz. Bu izleme bayrağı, paralel sorgu planlarına katılmasını engelleyerek seri olarak yürütülmesini zorlar SESSION_CONTEXT .

Şunlar için geçerlidir: SQL Server 2019 (15.x) CU 14 ve sonraki sürümleri.
Ocak 2022 Geçici çözümü var