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ı

Bunu Azure Synapse Analytics veya Analytics Platform System (PDW)'deki özel SQL havuzundan adlandırmak için bkz. sys.dm_pdw_nodes_exec_sessions. Serverless SQL pool veya Microsoft Fabric için .sys.dm_exec_sessions

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

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) Oturumu başlatan istemci programının adı. Değeri iç NULL oturumlar içindir. Nullable.
host_process_id int Oturumu başlatan istemci programın işlem kimliği. Değeri iç NULL oturumlar içindir. Nullable.
client_version int İstemcinin sunucuya bağlanmak için kullandığı arayüzün TDS protokol versiyonu. Değeri iç NULL oturumlar içindir. Nullable.
client_interface_name nvarchar(32) İ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. Nullable.
security_id varbinary(85) Giriş ile ilişkili Windows güvenlik kimliği. Null değeri atanamaz.
login_name nvarchar(128) 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. Null değeri atanamaz.
nt_domain nvarchar(128) 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. Nullable.
nt_user_name nvarchar(128) 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. Nullable.
status nvarchar(30) 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.

Null değeri atanamaz.
context_info varbinary(128) CONTEXT_INFO değerini seçin. Bağlam bilgisi, kullanıcı tarafından SET CONTEXT_INFO ifadesi kullanılarak ayarlanır. Nullable.
cpu_time int Bu oturumda kullanılan CPU süresi, milisaniye cinsinden. Null değeri atanamaz.
memory_usage int Bu oturumda kullanılan 8 KB sayfa bellek sayısı. Null değeri atanamaz.
total_scheduled_time int Oturumun (içindeki isteklerin) yürütülmesi için planlandığı toplam süre, milisaniyeler cinsinden. Null değeri atanamaz.
total_elapsed_time int Oturumun kurulmasından bu yana milisaniyeler cinsinden olan zaman. Null değeri atanamaz.
endpoint_id int Oturumla ilişkili uç noktanın kimliği. Null değeri atanamaz.
last_request_start_time datetime Oturumun son talebinin başladığı zaman. Bu süre, şu anda yürütülen isteği de kapsar. Null değeri atanamaz.
last_request_end_time datetime Oturumdaki bir isteğin son tamamlanma zamanı. Nullable.
reads bigint Bu oturumda yapılan istekler sayısı, bu oturum boyunca. Null değeri atanamaz.
writes bigint Bu oturumda yapılan yazılma sayısı, bu oturumda istek boyunca. Null değeri atanamaz.
logical_reads bigint Bu oturumda isteklerle yapılan mantıksal okuma sayısı. Null değeri atanamaz.
is_user_process bit 0 oturum bir sistem oturumuysa. Aksi takdirde, 1olur. Null değeri atanamaz.
text_size int TEXTSIZE ayarını seçin. Null değeri atanamaz.
language nvarchar(128) LANGUAGE ayarını seçin. Nullable.
date_format nvarchar(3) DATEFORMAT ayarını seçin. Nullable.
date_first smallint DATEFIRST ayarını seçin. Null değeri atanamaz.
quoted_identifier bit QUOTED_IDENTIFIER ayarını seçin. Null değeri atanamaz.
arithabort bit ARITHABORT ayarını seçin. Null değeri atanamaz.
ansi_null_dflt_on bit ANSI_NULL_DFLT_ON ayarını seçin. Null değeri atanamaz.
ansi_defaults bit ANSI_DEFAULTS ayarını seçin. Null değeri atanamaz.
ansi_warnings bit ANSI_WARNINGS ayarını seçin. Null değeri atanamaz.
ansi_padding bit ANSI_PADDING ayarını seçin. Null değeri atanamaz.
ansi_nulls bit ANSI_NULLS ayarını seçin. Null değeri atanamaz.
concat_null_yields_null bit CONCAT_NULL_YIELDS_NULL ayarını seçin. Null değeri atanamaz.
transaction_isolation_level smallint Oturumun işlem yalıtım düzeyi.

0 = Unspecified
1 = ReadUncommitted
2 = ReadCommitted
3 = RepeatableRead
4 = Serializable
5 = Snapshot

Null değeri atanamaz.
lock_timeout int LOCK_TIMEOUT ayarını seçin. Değer milisaniye cinsindendir. Null değeri atanamaz.
deadlock_priority int DEADLOCK_PRIORITY ayarını seçin. Null değeri atanamaz.
row_count bigint Bu noktaya kadar seansta geri dönen sıra sayısı. Null değeri atanamaz.
prev_error int Oturumda döndürülen son hatanın kimliği. Null değeri atanamaz.
original_security_id varbinary(85) Windows güvenlik kimliği ile original_login_nameilişkilendirilen . Null değeri atanamaz.
original_login_name nvarchar(128) İ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, EXECUTE AS kullanılıyorsa, oturum ilk bağlantıdan sonra birçok örtük veya açık bağlam değişiminden geçebilir. Null değeri atanamaz.
last_successful_logon datetime Mevcut oturum başlamadan önceki son başarılı giriş original_login_name zamanı.
last_unsuccessful_logon datetime Mevcut oturum başlamadan önceki son başarısız giriş girişi original_login_name zamanı.
unsuccessful_logons bigint Arasındaki last_successful_logon ve login_timearasındaki başarısız giriş girişi sayısıoriginal_login_name.
group_id int Bu oturumun ait olduğu iş yükü grubunun kimliği. Null değeri atanamaz.
database_id smallint 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 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 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 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 Bu oturum sırasında isteklerle gerçekleştirilen sayfa sunucusu okuma sayısı. Null değeri atanamaz.

Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçek.

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 bkz. Server configuration: common criteria compliance enabled.

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

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;