sys.dm_exec_sessions (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

SQL Server'da kimlik doğrulaması için bir satır döndürür. sys.dm_exec_sessions tüm aktif kullanıcı bağlantıları ve dahili görevler hakkında bilgi veren sunucu kapsamı görünümü. Bu bilgiler istemci sürümü, istemci program adı, istemci giriş zamanı, giriş kullanıcısı, güncel oturum ayarları ve daha fazlasını içerir. sys.dm_exec_sessions Önce mevcut sistem yükünü görmek ve ilgi çekici bir oturumu belirlemek için, ardından diğer dinamik yönetim görünümleri veya dinamik yönetim fonksiyonları kullanarak o oturum hakkında daha fazla bilgi edinmek için kullanılır.

sys.dm_exec_connections, sys.dm_exec_sessions, ve sys.dm_exec_requests dinamik yönetim görünümleri, artık kullanılmayan sys.sysprocesses sistem uyumluluk görünümüne eşlenir.

Note

Bu görünümü Azure Synapse Analytics (yalnızca özel SQL havuzu) veya Analytics Platform System (PDW) olarak adlandırmak için bkz. sys.dm_pdw_nodes_exec_sessions. Azure Synapse Analytics (serverless SQL pool only) veya Microsoft Fabric için kullanın sys.dm_exec_sessions .

Sütun adı Veri türü Null olabilir Açıklama
session_id smallint Hayır Her etkin birincil bağlantıyla ilişkili oturumu tanımlar.
login_time datetime Hayır Oturumun oluşturulduğu zaman. Bu DMV sorgulandığında tamamen giriş yapmamış oturumlar, giriş süresi ile 1900-01-01gösterilir.
host_name nvarchar(128) Yes Oturuma özel istemci iş istasyonunun adı. Değeri iç NULL oturumlar içindir.

Güvenlik notu: İstemci uygulaması iş istasyonu adını sağlar ve yanlış veri sağlayabilir. Güvenlik özelliğine HOST_NAME güvenmeyin.
program_name nvarchar(128) Yes Oturumu başlatan istemci programının adı. Değeri iç NULL oturumlar içindir.
host_process_id int Yes Oturumu başlatan istemci programın işlem kimliği. Değeri iç NULL oturumlar içindir.
client_version int Yes İstemcinin sunucuya bağlanmak için kullandığı arayüzün TDS protokol versiyonu. Değeri iç NULL oturumlar içindir.
client_interface_name nvarchar(32) Yes İstemci tarafından sunucuyla iletişim kurmak için kullanılan kitaplığın/sürücünün adı. Değeri iç NULL oturumlar içindir.
security_id varbinary(85) Hayır Giriş ile ilişkili Windows güvenlik kimliği.
login_name nvarchar(128) Hayır Oturumun yürütülmekte olduğu SQL Server oturum açma adı. Oturumu oluşturan orijinal giriş adı için bkz.original_login_name SQL Server doğrulanmış giriş adı veya Windows doğrulamalı alan alan adı olabilir.
nt_domain nvarchar(128) Yes Oturum Windows Kimlik Doğrulama veya güvenilir bir bağlantı kullanıyorsa istemci için Windows alan adı. Bu değer NULL dahili oturumlar ve alan dışı kullanıcılar içindir.
nt_user_name nvarchar(128) Yes Oturum Windows Kimlik Doğrulama veya güvenilir bir bağlantı kullanıyorsa istemci için Windows kullanıcı adı. Bu değer NULL dahili oturumlar ve alan dışı kullanıcılar içindir.
status nvarchar(30) Hayır Oturumun durumu. Olası değerler:

Running - Şu anda bir veya daha fazla istek çalıştırıyor
Sleeping - Şu anda herhangi bir istek çalıştırılmıyor
Dormant - Oturum, bağlantı havuzu nedeniyle sıfırlandı ve şu anda giriş öncesi durumda.
Preconnect - Oturum, Kaynak Valisi sınıflandırıcısındadır.
context_info varbinary(128) Yes CONTEXT_INFO değerini seçin. Bağlam bilgisi, kullanıcı tarafından bu SET CONTEXT_INFO ifadeyi kullanarak ayarlanır.
cpu_time int Hayır Bu oturumda kullanılan CPU süresi, milisaniye cinsinden.
memory_usage int Hayır Bu oturumda kullanılan 8 KB sayfa bellek sayısı.
total_scheduled_time int Hayır Oturumun (içindeki isteklerin) yürütülmesi için planlandığı toplam süre, milisaniyeler cinsinden.
total_elapsed_time int Hayır Oturumun kurulmasından bu yana milisaniyeler cinsinden olan zaman.
endpoint_id int Hayır Oturumla ilişkili uç noktanın kimliği.
last_request_start_time datetime Hayır Oturumun son talebinin başladığı zaman. Bu süre, şu anda yürütülen isteği de kapsar.
last_request_end_time datetime Yes Oturumdaki bir isteğin son tamamlanma zamanı.
reads bigint Hayır Bu oturumda yapılan fiziksel okuma sayısı, bu oturumda taleplere göre.
writes 1 bigint Hayır Bu oturumda yapılan istekler boyunca, bu oturum boyunca yapılan fiziksel yazma sayısı.
logical_reads bigint Hayır Bu oturumda isteklerle yapılan mantıksal okuma sayısı.
is_user_process bit Hayır 0 oturum bir sistem oturumuysa. Aksi takdirde, 1olur.
text_size int Hayır TEXTSIZE ayarını seçin.
language nvarchar(128) Yes LANGUAGE ayarını seçin.
date_format nvarchar(3) Yes DATEFORMAT ayarını seçin.
date_first smallint Hayır DATEFIRST ayarını seçin.
quoted_identifier bit Hayır QUOTED_IDENTIFIER ayarını seçin.
arithabort bit Hayır ARITHABORT ayarını seçin.
ansi_null_dflt_on bit Hayır ANSI_NULL_DFLT_ON ayarını seçin.
ansi_defaults bit Hayır ANSI_DEFAULTS ayarını seçin.
ansi_warnings bit Hayır ANSI_WARNINGS ayarını seçin.
ansi_padding bit Hayır ANSI_PADDING ayarını seçin.
ansi_nulls bit Hayır ANSI_NULLS ayarını seçin.
concat_null_yields_null bit Hayır CONCAT_NULL_YIELDS_NULL ayarını seçin.
transaction_isolation_level smallint Hayır Oturumun işlem yalıtım düzeyi.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot
lock_timeout int Hayır LOCK_TIMEOUT ayarını seçin. Değer milisaniye cinsindendir.
deadlock_priority int Hayır DEADLOCK_PRIORITY ayarını seçin.
row_count bigint Hayır Bu noktaya kadar seansta geri dönen sıra sayısı.
prev_error int Hayır Oturumda döndürülen son hatanın kimliği.
original_security_id varbinary(85) Hayır Windows güvenlik kimliği ile original_login_nameilişkilendirilen .
original_login_name nvarchar(128) Hayır İstemcinin bu oturumu oluşturmak için kullandığı SQL Server giriş adı. SQL Server doğrulanmış giriş adı, Windows doğrulamalı alan alanı kullanıcı adı veya kaplı bir veritabanı kullanıcısı olabilir. Örneğin, ilk bağlantıdan sonra oturum birçok örtük veya açık bağlam değişiminden geçmiş olabilir, EXECUTE AS örneğin kullanılıyorsa.
last_successful_logon datetime Yes Mevcut oturum başlamadan önceki son başarılı giriş original_login_name zamanı.
last_unsuccessful_logon datetime Yes Mevcut oturum başlamadan önceki son başarısız giriş girişi original_login_name zamanı.
unsuccessful_logons bigint Yes Arasındaki original_login_name ve last_successful_logonarasındaki başarısız giriş girişi sayısılogin_time.
group_id int Hayır Bu oturumun ait olduğu iş yükü grubunun kimliği.
database_id smallint Hayır Her oturum için geçerli veritabanının kimliği.

Azure SQL Veritabanı'nda değerler tek bir veritabanı veya elastik havuz içinde benzersizdir, ancak mantıksal sunucu içinde değildir.

için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
authenticating_database_id int Yes Sorumlunun kimliğini doğrulayarak veritabanının kimliği. Oturum açma işlemleri için değeri şeklindedir 0. Kapsanan veritabanı kullanıcıları için değer, kapsanan veritabanının veritabanı kimliğidir.

için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
open_transaction_count int Hayır Oturum başına açık işlem sayısı.

için geçerlidir: SQL Server 2012 (11.x) ve sonraki sürümler.
pdw_node_id int Hayır Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı.

Uygulanır: Azure Synapse Analytics ve Analytics Platform System (PDW).
page_server_reads bigint Hayır Bu oturum sırasında isteklerle gerçekleştirilen sayfa sunucusu okuma sayısı.

Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçek.
contained_availability_group_id uniqueidentifier Yes İçinde tutulan erişilebilirlik grubunun kimliği.

SQL Server 2025 (17.x) ve sonraki sürümler için geçerlidir.

1 Bir sayfanın tampon havuzunda kirli olarak işaretlendiği zamanı belirtir. Bu değer doğrudan gerçek yazımlarla eşdeğer değildir, çünkü aynı sayfa birden fazla kez işaretlenebilir. Bu sayaçlar partinin sonunda toplanır.

Permissions

Herkes kendi oturum bilgilerini görebilir.

SQL Server 2019 (15.x) ve önceki sürümlerde, sunucudaki tüm oturumları görmek gerekir VIEW SERVER STATE . SQL Server 2022 (16.x) ve sonraki sürümlerinde sunucuda izin gerekir VIEW SERVER PERFORMANCE STATE .

SQL Veritabanında, mevcut veritabanına tüm bağlantıların görülmesini gerektirir VIEW DATABASE STATE . VIEW DATABASE STATE veritabanında master verilemez.

Açıklamalar

common criteria compliance enabled Sunucu yapılandırma seçeneği etkinleştirildiğinde, giriş istatistikleri aşağıdaki sütunlarda görüntülenir.

  • last_successful_logon
  • last_unsuccessful_logon
  • unsuccessful_logons

Bu seçenek etkin değilse, bu sütunlar null değerler döndürür. Bu sunucu yapılandırma seçeneğinin nasıl ayarlanacağı hakkında daha fazla bilgi için Ortak kriterlere uyum yapılandırmasını etkinleştir bkz.

Azure SQL Veritabanı'deki admin bağlantıları her kimlik doğrulamalı oturum için bir satır görür. sa Sonuçlar setinde görünen oturumlar, kullanıcı oturum kotası üzerinde hiçbir etkisi yoktur. Yönetici olmayan bağlantılar yalnızca veritabanı kullanıcı oturumlarıyla ilgili bilgileri görür.

Kayıt şekillerindeki open_transaction_count farklılıklar nedeniyle uyuşmayabilir sys.dm_tran_session_transactions.open_transaction_count.

İlişki kardinaliteleri

From To Açık/Başvuru Relationship
sys.dm_exec_sessions sys.dm_exec_requests session_id Bir-sıfır veya bir-çok
sys.dm_exec_sessions sys.dm_exec_connections session_id Bir-sıfır veya bir-çok
sys.dm_exec_sessions sys.dm_tran_session_transactions session_id Bir-sıfır veya bir-çok
sys.dm_exec_sessions sys.dm_exec_cursors (session_id | 0) session_id CROSS APPLY
OUTER APPLY
Bir-sıfır veya bir-çok
sys.dm_exec_sessions sys.dm_db_session_space_usage session_id One-to-one

Examples

A. Sunucuya bağlı kullanıcıları bulun

Aşağıdaki örnek, sunucuya bağlı olan kullanıcıları bulur ve her kullanıcı için oturum sayısını döndürür.

SELECT login_name,
       COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;

B. Uzun süreli imleçleri bulun

Aşağıdaki örnek, belirli bir süreden fazla açık olan imleçleri, imleçleri kimin oluşturduğunu ve imleçlerin hangi oturumda olduğunu bulmaktadır.

USE master;
GO

SELECT creation_time,
       cursor_id,
       name,
       c.session_id,
       login_name
FROM sys.dm_exec_cursors(0) AS c
     INNER JOIN sys.dm_exec_sessions AS s
         ON c.session_id = s.session_id
WHERE DATEDIFF(mi, c.creation_time, GETDATE()) > 5;

C. Açık işlemler olan boşta oturumları bulun

Aşağıdaki örnek, açık işlemlere sahip ve boşta olan oturumları bulur. Boşta oturum, şu anda hiç istek çalışmayan oturumdur.

SELECT s.*
FROM sys.dm_exec_sessions AS s
WHERE EXISTS (SELECT *
              FROM sys.dm_tran_session_transactions AS t
              WHERE t.session_id = s.session_id)
      AND NOT EXISTS (SELECT *
                      FROM sys.dm_exec_requests AS r
                      WHERE r.session_id = s.session_id);

D. Bir sorgunun kendi bağlantısı hakkında bilgi bulun

Aşağıdaki örnek, bir sorgunun kendi bağlantısı hakkında bilgi toplar:

SELECT c.session_id,
       c.net_transport,
       c.encrypt_option,
       c.auth_scheme,
       s.host_name,
       s.program_name,
       s.client_interface_name,
       s.login_name,
       s.nt_domain,
       s.nt_user_name,
       s.original_login_name,
       c.connect_time,
       s.login_time
FROM sys.dm_exec_connections AS c
     INNER JOIN sys.dm_exec_sessions AS s
         ON c.session_id = s.session_id
WHERE c.session_id = @@SPID;