Aracılığıyla paylaş


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.

Uyarı

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 Description
session_id smallint Hayı Her etkin birincil bağlantıyla ilişkili oturumu tanımlar.
login_time datetime Hayı 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ı Giriş ile ilişkili Windows güvenlik kimliği.
login_name nvarchar(128) Hayı 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ı 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 SET CONTEXT_INFO ifadesi kullanılarak ayarlanır.
cpu_time int Hayı Bu oturumda kullanılan CPU süresi, milisaniye cinsinden.
memory_usage int Hayı Bu oturumda kullanılan 8 KB sayfa bellek sayısı.
total_scheduled_time int Hayı Oturumun (içindeki isteklerin) yürütülmesi için planlandığı toplam süre, milisaniyeler cinsinden.
total_elapsed_time int Hayı Oturumun kurulmasından bu yana milisaniyeler cinsinden olan zaman.
endpoint_id int Hayı Oturumla ilişkili uç noktanın kimliği.
last_request_start_time datetime Hayı 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ı Bu oturumda yapılan fiziksel okuma sayısı, bu oturumda taleplere göre.
writes 1 bigint Hayı Bu oturumda yapılan istekler boyunca, bu oturum boyunca yapılan fiziksel yazma sayısı.
logical_reads bigint Hayı Bu oturumda isteklerle yapılan mantıksal okuma sayısı.
is_user_process bit Hayı 0 oturum bir sistem oturumuysa. Aksi takdirde, 1olur.
text_size int Hayı 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ı DATEFIRST ayarını seçin.
quoted_identifier bit Hayı QUOTED_IDENTIFIER ayarını seçin.
arithabort bit Hayı ARITHABORT ayarını seçin.
ansi_null_dflt_on bit Hayı ANSI_NULL_DFLT_ON ayarını seçin.
ansi_defaults bit Hayı ANSI_DEFAULTS ayarını seçin.
ansi_warnings bit Hayı ANSI_WARNINGS ayarını seçin.
ansi_padding bit Hayı ANSI_PADDING ayarını seçin.
ansi_nulls bit Hayı ANSI_NULLS ayarını seçin.
concat_null_yields_null bit Hayı CONCAT_NULL_YIELDS_NULL ayarını seçin.
transaction_isolation_level smallint Hayı Oturumun işlem yalıtım düzeyi.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot
lock_timeout int Hayı LOCK_TIMEOUT ayarını seçin. Değer milisaniye cinsindendir.
deadlock_priority int Hayı DEADLOCK_PRIORITY ayarını seçin.
row_count bigint Hayı Bu noktaya kadar seansta geri dönen sıra sayısı.
prev_error int Hayı Oturumda döndürülen son hatanın kimliği.
original_security_id varbinary(85) Hayı Windows güvenlik kimliği ile original_login_nameilişkilendirilen .
original_login_name nvarchar(128) Hayı İ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. Oturum, örneğin EXECUTE AS kullanılıyorsa, ilk bağlantıdan sonra birçok örtük veya açık bağlam anahtarından geçmiş olabilir.
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ı Bu oturumun ait olduğu iş yükü grubunun kimliği.
database_id smallint Hayı 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ı 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ı 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ı 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 Database'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

Kaynak İçin Açık/Başvuru İlişki
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

Örnekler

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;