Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
SQL Server'da yürütülen her istek hakkındaki bilgileri döndürür. İstekler hakkında daha fazla bilgi için bkz. İş parçacığı ve görev mimarisi kılavuzu.
Note
Bunu Azure Synapse Analytics veya Analytics Platform Sistemi'ndeki (PDW) ayrılmış SQL havuzundan çağırmak için bkz. sys.dm_pdw_exec_requests. Sunucusuz SQL havuzu veya Microsoft Fabric için kullanın sys.dm_exec_requests.
| Sütun adı | Veri türü | Açıklama |
|---|---|---|
session_id |
smallint | Bu isteğin ilişkili olduğu oturumun kimliği. Null değeri atanamaz. |
request_id |
int | İsteğin tanımlayıcısı. Oturum bağlamında benzersiz. Null değeri atanamaz. |
start_time |
datetime | İstek geldiğinde zaman damgası. Null değeri atanamaz. |
status |
nvarchar(30) | İsteğin durumu. Aşağıdaki değerlerden biri olabilir: arka plan rollback çalıştırılıyor çalıştırılabilir uyku Askıya alındı Null değeri atanamaz. |
command |
nvarchar(32) | İşlenmekte olan geçerli komut türünü tanımlar. Yaygın komut türleri aşağıdaki değerleri içerir: SELECT INSERT UPDATE DELETE BACKUP GÜNLÜK BACKUP DATABASE DBCC FOR İstek metni, istek için karşılık gelen sys.dm_exec_sql_text ile kullanılarak sql_handle alınabilir. İç sistem işlemleri, komutu gerçekleştirdikleri görev türüne göre ayarlar. Görevler aşağıdaki değerleri içerebilir:KİLİT MONİTÖRÜ CHECKPOINTLAZY YAZAR Null değeri atanamaz. |
sql_handle |
varbinary(64) | Sorgunun parçası olduğu toplu işlemi veya saklı yordamı benzersiz olarak tanımlayan belirteç. Nullable. |
statement_start_offset |
int | 0 ile başlayan bayt cinsinden, şu anda yürütülmekte olan toplu iş veya kalıcı nesne için yürütülmekte olan deyiminin başlangıç konumunu gösterir. İstek için şu anda yürütülen deyimini almak için , sql_handleve statement_end_offset dinamik yönetim işleviyle sys.dm_exec_sql_textbirlikte kullanılabilir. Nullable. |
statement_end_offset |
int | 0 ile başlayarak, şu anda yürütülen toplu iş veya kalıcı nesne için şu anda yürütülen deyiminin bitiş konumunu bayt cinsinden gösterir. İstek için şu anda yürütülen deyimini almak için , sql_handleve statement_start_offset dinamik yönetim işleviyle sys.dm_exec_sql_textbirlikte kullanılabilir. Nullable. |
plan_handle |
varbinary(64) | Şu anda yürütülmekte olan bir toplu iş için sorgu yürütme planını benzersiz olarak tanımlayan belirteç. Nullable. |
database_id |
smallint | İsteğin yürütülmekte olduğu veritabanının kimliği. Null değeri atanamaz. Azure SQL Veritabanı'nda değerler tek bir veritabanı veya elastik havuz içinde benzersizdir, ancak mantıksal sunucu içinde değildir. |
user_id |
int | İsteği gönderen kullanıcının kimliği. Null değeri atanamaz. |
connection_id |
uniqueidentifier | İsteğin geldiği bağlantının kimliği. Nullable. |
blocking_session_id |
smallint | İsteği engelleyen oturumun kimliği. Bu sütun veya NULLise 0 istek engellenmez veya engelleme oturumunun oturum bilgileri kullanılamaz (veya tanımlanamaz). Daha fazla bilgi için bkz. SQL Server engelleme sorunlarını anlama ve çözme.-2 = Engelleyici kaynak yalnız bırakılmış dağıtılmış bir işleme aittir. -3 = Engelleyici kaynak ertelenen bir kurtarma işlemine aittir. -4 = session_id engelleyen mandal sahibinin iç mandal durumu geçişleri nedeniyle şu anda belirlenemedi.-5
=
session_id engelleyici mandal sahibi belirlenemedi çünkü bu mandal türü için izlenmedi (örneğin, bir SH mandalı için).Tek başına, blocking_session_id-5 bir performans sorununa işaret etmez.
-5 oturumun zaman uyumsuz bir eylemin tamamlanmasını beklediğinin göstergesidir. Kullanılmadan önce -5 , aynı oturum hala bekleme durumunda olmasına rağmen öğesini göstermeliydi blocking_session_id0.İş yüküne bağlı olarak gözlemleme blocking_session_id = -5 yaygın bir durum olabilir. |
wait_type |
nvarchar(60) | İstek şu anda engellenmişse, bu sütun bekleme türünü döndürür. Nullable. Bir istek birden çok görev kullandığında, örneğin sorgu içi paralellik nedeniyle görevler farklı bekleme türlerine sahip farklı kaynaklarda bekleyebilir. Aynı isteğin diğer görevleri yürütülmeye devam ederken bir görev engellenebilir. Her görevin bekleme türünü ve süresini ve engellenip engellenmediğini bulmak için sys.dm_os_waiting_tasks kullanın. Bekleme türleri hakkında bilgi için bkz. sys.dm_os_wait_stats. |
wait_time |
int | İstek şu anda engellenmişse, bu sütun geçerli beklemenin süresini milisaniye cinsinden döndürür. Null değeri atanamaz. |
last_wait_type |
nvarchar(60) | Bu istek daha önce engellenmişse, bu sütun son beklemenin türünü döndürür. Null değeri atanamaz. |
wait_resource |
nvarchar(256) | İstek şu anda engellenmişse, bu sütun isteğin şu anda beklediği kaynağı döndürür. Null değeri atanamaz. |
open_transaction_count |
int | Bu istek için açık olan işlem sayısı. Null değeri atanamaz. |
open_resultset_count |
int | Bu istek için açık olan sonuç kümelerinin sayısı. Null değeri atanamaz. |
transaction_id |
bigint | Bu isteğin yürütüldiği işlemin kimliği. Null değeri atanamaz. |
context_info |
varbinary(128) | CONTEXT_INFO Seansın değeri. Nullable. |
percent_complete |
real | Aşağıdaki komutlar için tamamlanan çalışma yüzdesi:ALTER INDEX REORGANIZEAUTO_SHRINK seçeneği ALTER DATABASEBACKUP DATABASEDBCC CHECKDBDBCC CHECKFILEGROUPDBCC CHECKTABLEDBCC INDEXDEFRAGDBCC SHRINKDATABASEDBCC SHRINKFILERECOVERYRESTORE DATABASEROLLBACKTDE ENCRYPTIONNull değeri atanamaz. |
estimated_completion_time |
bigint | Yalnızca dahili. Null değeri atanamaz. |
cpu_time |
int | İstek tarafından kullanılan milisaniye cinsinden CPU süresi. Null değeri atanamaz. |
total_elapsed_time |
int | İsteğin gelmesinden bu yana geçen toplam süre milisaniye cinsindendir. Null değeri atanamaz. |
scheduler_id |
int | Bu isteği zamanlayan zamanlayıcının kimliği. Nullable. |
task_address |
varbinary(8) | Bu istekle ilişkili göreve ayrılan bellek adresi. Nullable. |
reads |
bigint | Bu istek tarafından gerçekleştirilen okuma sayısı. Null değeri atanamaz. |
writes |
bigint | Bu istek tarafından gerçekleştirilen yazma sayısı. Null değeri atanamaz. |
logical_reads |
bigint | İstek tarafından gerçekleştirilen mantıksal okuma sayısı. Null değeri atanamaz. |
text_size |
int | TEXTSIZE bu istek için ayar. Null değeri atanamaz. |
language |
nvarchar(128) | İstek için dil ayarı. Nullable. |
date_format |
nvarchar(3) | DATEFORMAT talep için ayar. Nullable. |
date_first |
smallint | DATEFIRST talep için ayar. Null değeri atanamaz. |
quoted_identifier |
bit | 1 = QUOTED_IDENTIFIER istek için AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
arithabort |
bit | 1 = ARITHABORT istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
ansi_null_dflt_on |
bit | 1 = ANSI_NULL_DFLT_ON istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
ansi_defaults |
bit | 1 = ANSI_DEFAULTS istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
ansi_warnings |
bit | 1 = ANSI_WARNINGS istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
ansi_padding |
bit | 1 = ANSI_PADDING istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
ansi_nulls |
bit | 1 = ANSI_NULLS istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
concat_null_yields_null |
bit | 1 = CONCAT_NULL_YIELDS_NULL istek için ayar AÇIK. Aksi takdirde, 0 olur. Null değeri atanamaz. |
transaction_isolation_level |
smallint | Bu istek için işlemin oluşturulduğu yalıtım düzeyi. Null değeri atanamaz. 0 = Belirtilmemiş 1 = ReadUncommitted 2 = ReadCommitted 3 = Yinelenebilir 4 = Serileştirilebilir 5 = Anlık Görüntü |
lock_timeout |
int | Bu istek için zaman aşımı süresini milisaniye olarak kilitleyin. Null değeri atanamaz. |
deadlock_priority |
int | DEADLOCK_PRIORITY talep için ayar. Null değeri atanamaz. |
row_count |
bigint | Bu istek tarafından istemciye döndürülen satır sayısı. Null değeri atanamaz. |
prev_error |
int | İsteğin yürütülmesi sırasında oluşan son hata. Null değeri atanamaz. |
nest_level |
int | İstekte yürütülen kodun geçerli iç içe yerleştirme düzeyi. Null değeri atanamaz. |
granted_query_memory |
int | İstekte sorgunun yürütülmesi için ayrılan sayfa sayısı. Null değeri atanamaz. |
executing_managed_code |
bit | Belirli bir isteğin şu anda yordamlar, türler ve tetikleyiciler gibi ortak dil çalışma zamanı nesnelerini yürüterek yürütmediğini gösterir. ortak dil çalışma zamanı içinden Transact-SQL çalıştırırken bile yığında ortak dil çalışma zamanı nesnesinin tam zamanı için ayarlanır. Null değeri atanamaz. |
group_id |
int | Bu sorgunun ait olduğu iş yükü grubunun kimliği. Null değeri atanamaz. |
query_hash |
binary(8) | Sorguda hesaplanan ve benzer mantığa sahip sorguları tanımlamak için kullanılan ikili karma değeri. Sorgu karması kullanarak yalnızca değişmez değerlerle farklılık gösteren sorguların toplam kaynak kullanımını belirleyebilirsiniz. |
query_plan_hash |
binary(8) | Sorgu yürütme planında hesaplanan ve benzer sorgu yürütme planlarını tanımlamak için kullanılan ikili karma değer. Benzer yürütme planlarına sahip sorguların toplu maliyetini bulmak için sorgu planı karması kullanabilirsiniz. |
statement_sql_handle |
varbinary(64) |
için geçerlidir: SQL Server 2014 (12.x) ve üzeri.sql_handle öğesini seçin.Bu sütun, NULL Veritabanı için Sorgu Deposu'nun etkinleştirilmemiş olmasıdır. |
statement_context_id |
bigint |
için geçerlidir: SQL Server 2014 (12.x) ve üzeri. için isteğe bağlı yabancı anahtar sys.query_context_settings.Bu sütun, NULL Veritabanı için Sorgu Deposu'nun etkinleştirilmemiş olmasıdır. |
dop |
int |
için geçerlidir: SQL Server 2016 (13.x) ve üzeri. Sorgunun paralellik derecesi. |
parallel_worker_count |
int |
için geçerlidir: SQL Server 2016 (13.x) ve üzeri. Bu bir paralel sorguysa ayrılmış paralel çalışan sayısı. |
external_script_request_id |
uniqueidentifier |
için geçerlidir: SQL Server 2016 (13.x) ve üzeri. Geçerli istekle ilişkili dış betik isteği kimliği. |
is_resumable |
bit |
için geçerlidir: SQL Server 2017 (14.x) ve üzeri. İsteğin devam ettirilebilir bir dizin işlemi olup olmadığını gösterir. |
page_resource |
binary(8) |
için geçerlidir: SQL Server 2019 (15.x) Sütunda sayfa varsa wait_resource sayfa kaynağının 8 baytlık onaltılık gösterimi. Daha fazla bilgi için bkz. sys.fn_PageResCracker. |
page_server_reads |
bigint |
Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçek Bu istek tarafından gerçekleştirilen sayfa sunucusu okuma sayısı. Null değeri atanamaz. |
dist_statement_id |
uniqueidentifier |
Şunlar için geçerlidir: SQL Server 2022 ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Azure Synapse Analytics (yalnızca sunucusuz havuzlar) ve Microsoft Fabric Gönderilen isteğin deyiminin benzersiz kimliği. Null değeri atanamaz. |
Açıklamalar
SQL Server dışındaki kodu (örneğin, genişletilmiş saklı yordamlar ve dağıtılmış sorgular) yürütmek için, iş parçacığının önleyici olmayan zamanlayıcının denetimi dışında yürütülmesi gerekir. Bunu yapmak için bir çalışan önalımlı moda geçer. Bu dinamik yönetim görünümü tarafından döndürülen zaman değerleri, önleyici modda harcanan zamanı içermez.
Paralel istekleri satır modunda yürütürken, SQL Server kendilerine atanan görevleri tamamlamaktan sorumlu çalışan iş parçacıklarını koordine etmek için bir çalışan iş parçacığı atar. Bu DMV'de istek için yalnızca koordinatör iş parçacığı görünür. , reads, writesve logical_reads sütunları row_countkoordinatör iş parçacığı için güncelleştirilmez. , , wait_typewait_time, ve last_wait_typewait_resourcesütunları granted_query_memoryyalnızca koordinatör iş parçacığı için güncelleştirilir. Daha fazla bilgi için
sütun, wait_resourceresource_description ile benzer bilgiler içerir ancak farklı biçimlendirilir.
Permissions
Kullanıcının VIEW SERVER STATE sunucuda izni varsa, kullanıcı SQL Server örneğinde tüm yürütme oturumlarını görür; aksi takdirde, kullanıcı yalnızca geçerli oturumu görür.
VIEW SERVER STATE Azure SQL Veritabanı'nda verilemiyor, bu nedenle sys.dm_exec_requests her zaman geçerli bağlantıyla sınırlıdır.
Kullanılabilirlik grubu senaryolarında, ikincil çoğaltma salt okunur amaca ayarlanmışsa, ikincil çoğaltmaya yönelik bağlantı, bağlantı dizesi parametrelerinde uygulama amacını ekleyerek applicationintent=readonlybelirtmelidir. Aksi takdirde, erişim denetimi sys.dm_exec_requests , izin mevcut olsa VIEW SERVER STATE bile kullanılabilirlik grubundaki veritabanları için geçirilmez.
SQL Server 2022 (16.x) ve sonraki sürümler için, sys.dm_exec_requests sunucuda SERVER PERFORMANCE STATE izni gerektirirVIEW.
Examples
A. Çalışan bir toplu iş için sorgu metnini bulma
Aşağıdaki örnek, ilginç sorguyu bulmak ve çıktısından sys.dm_exec_requests kopyalamak için sql_handle sorgular.
SELECT * FROM sys.dm_exec_requests;
GO
Ardından, deyimi metnini almak için ile kopyalanan sql_handle sistem işlevini sys.dm_exec_sql_text(sql_handle)kullanın.
SELECT * FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. Etkin istekleri göster
Aşağıdaki örnekte, kendi oturumunuz ( ) hariç, SQL Server veri ambarınızda çalışmakta olan tüm sorgular gösterilmektedir@@SPID. her isteğin tam sorgu metnini almak için ile CROSS APPLY kullanır sys.dm_exec_sql_text ve kullanıcıya herhangi bir konak bilgisi eklemek için ile birleşirsys.dm_exec_sessions. Filtre, session_id <> @@SPID sonuçlarda kendi sorgunuzu görmemenizi sağlar.
SELECT r.session_id,
r.status,
r.command,
r.start_time,
r.total_elapsed_time / 1000.00 AS elapsed_seconds,
r.cpu_time / 1000.00 AS cpu_seconds,
r.reads,
r.writes,
r.logical_reads,
r.row_count,
s.login_name,
s.host_name,
t.text AS query_text
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_exec_sessions AS s
ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.session_id <> @@SPID
ORDER BY r.start_time DESC;
C. Çalışan bir toplu işlemi tutan tüm kilitleri bulma
Aşağıdaki örnek, ilginç toplu işlemi bulmak ve çıktıdan kopyalamak sys.dm_exec_requests için sorgulartransaction_id.
SELECT * FROM sys.dm_exec_requests;
GO
Ardından, kilit bilgilerini bulmak için sistem işleviyle transaction_idkopyalanan sys.dm_tran_locks öğesini kullanın.
SELECT * FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
AND request_owner_id = < copied transaction_id >;
GO
D. Şu anda engellenen tüm istekleri bulma
Aşağıdaki örnek, engellenen istekler hakkında bilgi bulmak için sorgular sys.dm_exec_requests .
SELECT session_id,
status,
blocking_session_id,
wait_type,
wait_time,
wait_resource,
transaction_id
FROM sys.dm_exec_requests
WHERE status = N'suspended';
GO
E. Mevcut istekleri CPU'ya göre sıralama
SELECT [req].[session_id],
[req].[start_time],
[req].[cpu_time] AS [cpu_time_ms],
OBJECT_NAME([ST].[objectid], [ST].[dbid]) AS [ObjectName],
SUBSTRING(
REPLACE(
REPLACE(
SUBSTRING(
[ST].[text], ([req].[statement_start_offset] / 2) + 1,
((CASE [req].[statement_end_offset]
WHEN -1 THEN DATALENGTH([ST].[text])
ELSE [req].[statement_end_offset]
END - [req].[statement_start_offset]
) / 2
) + 1
), CHAR(10), ' '
), CHAR(13), ' '
), 1, 512
) AS [statement_text]
FROM
[sys].[dm_exec_requests] AS [req]
CROSS APPLY [sys].dm_exec_sql_text([req].[sql_handle]) AS [ST]
ORDER BY
[req].[cpu_time] DESC;
GO
İlgili içerik
- sistem dinamik yönetim görünümleri
- Yürütmeyle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
- sys.dm_os_memory_clerks (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- sys.dm_exec_query_memory_grants (Transact-SQL)
- sys.dm_exec_query_plan (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- SQL Server, SQL İstatistikleri nesnesi
- Sorgu İşleme Mimarisi Kılavuzu
- İş parçacığı ve görev mimarisi kılavuzu
- İşlem kilitleme ve satır sürüm oluşturma kılavuzu
- SQL Server engelleme sorunlarını anlama ve çözme