Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL di Microsoft Fabric
Mengembalikan satu baris per sesi terautentikasi di SQL Server.
sys.dm_exec_sessions adalah tampilan cakupan server yang memperlihatkan informasi tentang semua koneksi pengguna aktif dan tugas internal. Informasi ini mencakup versi klien, nama program klien, waktu masuk klien, pengguna masuk, pengaturan sesi saat ini, dan banyak lagi. Gunakan sys.dm_exec_sessions untuk terlebih dahulu melihat beban sistem saat ini dan untuk mengidentifikasi sesi yang menarik, lalu pelajari lebih lanjut tentang sesi tersebut dengan menggunakan tampilan manajemen dinamis lainnya atau fungsi manajemen dinamis.
Tampilan sys.dm_exec_connectionsmanajemen dinamis , sys.dm_exec_sessions, dan sys.dm_exec_requests peta ke tampilan kompatibilitas sistem sys.sysprocesses yang tidak digunakan lagi.
Catatan
Untuk memanggil tampilan ini dari Azure Synapse Analytics (hanya kumpulan SQL khusus) atau Sistem Platform Analytics (PDW), lihat sys.dm_pdw_nodes_exec_sessions. Gunakan sys.dm_exec_sessions untuk Azure Synapse Analytics (hanya kumpulan SQL tanpa server) atau Microsoft Fabric.
| Nama kolom | Jenis Data | Bisa bernilai null | Description |
|---|---|---|---|
session_id |
smallint | Tidak. | Mengidentifikasi sesi yang terkait dengan setiap koneksi utama aktif. |
login_time |
datetime | Tidak. | Waktu ketika sesi dibuat. Sesi yang belum sepenuhnya masuk pada saat DMV ini dikueri, ditampilkan dengan waktu 1900-01-01masuk . |
host_name |
nvarchar(128) | Yes | Nama workstation klien yang khusus untuk sesi. Nilainya adalah NULL untuk sesi internal.Catatan keamanan: Aplikasi klien menyediakan nama stasiun kerja dan dapat memberikan data yang tidak akurat. Jangan mengandalkan HOST_NAME sebagai fitur keamanan. |
program_name |
nvarchar(128) | Yes | Nama program klien yang memulai sesi. Nilainya adalah NULL untuk sesi internal. |
host_process_id |
int | Yes | ID proses program klien yang memulai sesi. Nilainya adalah NULL untuk sesi internal. |
client_version |
int | Yes | Versi protokol TDS dari antarmuka yang digunakan oleh klien untuk terhubung ke server. Nilainya adalah NULL untuk sesi internal. |
client_interface_name |
nvarchar(32) | Yes | Nama pustaka/driver yang digunakan oleh klien untuk berkomunikasi dengan server. Nilainya adalah NULL untuk sesi internal. |
security_id |
varbinary(85) | Tidak. | ID keamanan Windows yang terkait dengan log masuk. |
login_name |
nvarchar(128) | Tidak. | Nama masuk SQL Server tempat sesi sedang dijalankan. Untuk nama login asli yang membuat sesi, lihat original_login_name. Bisa menjadi nama masuk terautentikasi SQL Server atau nama pengguna domain terautentikasi Windows. |
nt_domain |
nvarchar(128) | Yes | Domain Windows untuk klien jika sesi menggunakan Autentikasi Windows atau koneksi tepercaya. Nilai NULL ini untuk sesi internal dan pengguna non-domain. |
nt_user_name |
nvarchar(128) | Yes | Nama pengguna Windows untuk klien jika sesi menggunakan Autentikasi Windows atau koneksi tepercaya. Nilai NULL ini untuk sesi internal dan pengguna non-domain. |
status |
nvarchar(30) | Tidak. | Status sesi. Nilai yang mungkin:Running - Saat ini menjalankan satu atau beberapa permintaanSleeping - Saat ini tidak menjalankan permintaanDormant - Sesi direset karena pengumpulan koneksi dan sekarang dalam status pralogin.Preconnect - Sesi ada di pengklasifikasi Resource Governor. |
context_info |
varbinary(128) | Yes |
CONTEXT_INFO nilai untuk sesi. Informasi konteks diatur oleh pengguna dengan menggunakan pernyataan SET CONTEXT_INFO . |
cpu_time |
int | Tidak. | Waktu CPU, dalam milidetik, digunakan oleh sesi ini. |
memory_usage |
int | Tidak. | Jumlah halaman memori 8 KB yang digunakan oleh sesi ini. |
total_scheduled_time |
int | Tidak. | Total waktu, dalam milidetik, di mana sesi (permintaan di dalamnya) dijadwalkan untuk eksekusi. |
total_elapsed_time |
int | Tidak. | Waktu, dalam milidetik, sejak sesi ditetapkan. |
endpoint_id |
int | Tidak. | ID titik akhir yang terkait dengan sesi. |
last_request_start_time |
datetime | Tidak. | Waktu di mana permintaan terakhir pada sesi dimulai. Kali ini mencakup permintaan yang sedang dijalankan. |
last_request_end_time |
datetime | Yes | Waktu penyelesaian permintaan terakhir pada sesi. |
reads |
bigint | Tidak. | Jumlah pembacaan fisik yang dilakukan, berdasarkan permintaan dalam sesi ini, selama sesi ini. |
writes
1 |
bigint | Tidak. | Jumlah penulisan fisik yang dilakukan, berdasarkan permintaan dalam sesi ini, selama sesi ini. |
logical_reads |
bigint | Tidak. | Jumlah pembacaan logis yang dilakukan, berdasarkan permintaan dalam sesi ini, selama sesi ini. |
is_user_process |
bit | Tidak. |
0 jika sesi adalah sesi sistem. Jika tidak, itu 1adalah . |
text_size |
int | Tidak. |
TEXTSIZE pengaturan untuk sesi. |
language |
nvarchar(128) | Yes |
LANGUAGE pengaturan untuk sesi. |
date_format |
nvarchar(3) | Yes |
DATEFORMAT pengaturan untuk sesi. |
date_first |
smallint | Tidak. |
DATEFIRST pengaturan untuk sesi. |
quoted_identifier |
bit | Tidak. |
QUOTED_IDENTIFIER pengaturan untuk sesi. |
arithabort |
bit | Tidak. |
ARITHABORT pengaturan untuk sesi. |
ansi_null_dflt_on |
bit | Tidak. |
ANSI_NULL_DFLT_ON pengaturan untuk sesi. |
ansi_defaults |
bit | Tidak. |
ANSI_DEFAULTS pengaturan untuk sesi. |
ansi_warnings |
bit | Tidak. |
ANSI_WARNINGS pengaturan untuk sesi. |
ansi_padding |
bit | Tidak. |
ANSI_PADDING pengaturan untuk sesi. |
ansi_nulls |
bit | Tidak. |
ANSI_NULLS pengaturan untuk sesi. |
concat_null_yields_null |
bit | Tidak. |
CONCAT_NULL_YIELDS_NULL pengaturan untuk sesi. |
transaction_isolation_level |
smallint | Tidak. | Tingkat isolasi transaksi sesi.0 = Unspecified1 = ReadUncommitted2 = ReadCommitted3 = RepeatableRead4 = Serializable5 = Snapshot |
lock_timeout |
int | Tidak. |
LOCK_TIMEOUT pengaturan untuk sesi. Nilainya dalam milidetik. |
deadlock_priority |
int | Tidak. |
DEADLOCK_PRIORITY pengaturan untuk sesi. |
row_count |
bigint | Tidak. | Jumlah baris yang dikembalikan pada sesi hingga titik ini. |
prev_error |
int | Tidak. | ID kesalahan terakhir yang dikembalikan pada sesi. |
original_security_id |
varbinary(85) | Tidak. | ID keamanan Windows yang terkait dengan original_login_name. |
original_login_name |
nvarchar(128) | Tidak. | Nama masuk SQL Server yang digunakan klien untuk membuat sesi ini. Bisa menjadi nama masuk terautentikasi SQL Server, nama pengguna domain terautentikasi Windows, atau pengguna database mandiri. Sesi mungkin telah melalui banyak sakelar konteks implisit atau eksplisit setelah koneksi awal, misalnya, jika EXECUTE AS digunakan. |
last_successful_logon |
datetime | Yes | Waktu masuk terakhir yang berhasil untuk original_login_name sebelum sesi saat ini dimulai. |
last_unsuccessful_logon |
datetime | Yes | Waktu upaya masuk terakhir yang gagal untuk original_login_name sebelum sesi saat ini dimulai. |
unsuccessful_logons |
bigint | Yes | Jumlah upaya masuk yang tidak berhasil untuk original_login_name antara last_successful_logon dan login_time. |
group_id |
int | Tidak. | ID grup beban kerja tempat sesi ini berada. |
database_id |
smallint | Tidak. | ID database saat ini untuk setiap sesi. Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis. Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru. |
authenticating_database_id |
int | Yes | ID database yang mengautentikasi prinsipal. Untuk login, nilainya adalah 0. Untuk pengguna database mandiri, nilainya adalah ID database dari database yang terkandung.Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru. |
open_transaction_count |
int | Tidak. | Jumlah transaksi terbuka per sesi. Berlaku untuk: SQL Server 2012 (11.x) dan versi yang lebih baru. |
pdw_node_id |
int | Tidak. | Pengidentifikasi untuk simpul tempat distribusi ini aktif. Berlaku untuk: Azure Synapse Analytics, dan Analytics Platform System (PDW). |
page_server_reads |
bigint | Tidak. | Jumlah pembacaan server halaman yang dilakukan, berdasarkan permintaan dalam sesi ini, selama sesi ini. Berlaku untuk: Azure SQL Database Hyperscale. |
contained_availability_group_id |
pengidentifikasi unik | Yes | ID grup ketersediaan yang terkandung. Berlaku untuk: SQL Server 2025 (17.x) dan versi yang lebih baru. |
1 Menentukan kapan halaman ditandai kotor di kumpulan buffer. Nilai ini tidak secara langsung sama dengan penulisan aktual, karena halaman yang sama dapat ditandai lebih dari sekali. Penghitung ini dikumpulkan di akhir batch.
Izin
Setiap orang dapat melihat informasi sesi mereka sendiri.
Di SQL Server 2019 (15.x) dan versi yang lebih lama, perlu VIEW SERVER STATE melihat semua sesi di server. Di SQL Server 2022 (16.x) dan versi yang lebih baru, memerlukan VIEW SERVER PERFORMANCE STATE izin di server.
Di SQL Database, perlu VIEW DATABASE STATE melihat semua koneksi ke database saat ini.
VIEW DATABASE STATE tidak dapat diberikan dalam master database.
Keterangan
common criteria compliance enabled Saat opsi konfigurasi server diaktifkan, statistik masuk ditampilkan di kolom berikut.
last_successful_logonlast_unsuccessful_logonunsuccessful_logons
Jika opsi ini tidak diaktifkan, kolom ini mengembalikan nilai null. Untuk informasi selengkapnya tentang cara mengatur opsi konfigurasi server ini, lihat Mengaktifkan konfigurasi kepatuhan kriteria umum.
Koneksi admin di Azure SQL Database melihat satu baris per sesi terautentikasi. Sesi sa yang muncul di resultset, tidak berpengaruh pada kuota pengguna untuk sesi. Koneksi non-admin hanya melihat informasi yang terkait dengan sesi pengguna database mereka.
Karena perbedaan dalam cara mereka direkam, open_transaction_count mungkin tidak cocok sys.dm_tran_session_transactionsdengan .open_transaction_count.
Kardinalitas hubungan
| Dari | Untuk | Aktif/Terapkan | Hubungan |
|---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests | session_id |
Satu-ke-nol atau satu-ke-banyak |
sys.dm_exec_sessions |
sys.dm_exec_connections | session_id |
Satu-ke-nol atau satu-ke-banyak |
sys.dm_exec_sessions |
sys.dm_tran_session_transactions | session_id |
Satu-ke-nol atau satu-ke-banyak |
sys.dm_exec_sessions |
sys.dm_exec_cursors (session_id | 0) |
session_id CROSS APPLYOUTER APPLY |
Satu-ke-nol atau satu-ke-banyak |
sys.dm_exec_sessions |
sys.dm_db_session_space_usage | session_id |
One-to-one |
Contoh
J. Menemukan pengguna yang tersambung ke server
Contoh berikut menemukan pengguna yang tersambung ke server dan mengembalikan jumlah sesi untuk setiap pengguna.
SELECT login_name,
COUNT(session_id) AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name;
B. Menemukan kursor yang berjalan lama
Contoh berikut menemukan kursor yang terbuka selama lebih dari periode waktu tertentu, siapa yang membuat kursor, dan sesi apa kursor berada.
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. Menemukan sesi diam yang memiliki transaksi terbuka
Contoh berikut menemukan sesi yang memiliki transaksi terbuka dan menganggur. Sesi diam adalah sesi yang tidak memiliki permintaan yang saat ini berjalan.
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. Menemukan informasi tentang koneksi kueri sendiri
Contoh berikut mengumpulkan informasi tentang koneksi kueri sendiri:
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;