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
Analytics Platform Sistemi (PDW)
Microsoft Fabric
Warehouse'da SQL analiz uç noktası
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.
Uyarı
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. Boş değer atanamaz. |
request_id |
int | İsteğin kimliği. Oturum bağlamında benzersiz. Boş değer atanamaz. |
start_time |
tarih ve saat | İstek geldiğinde zaman damgası. Boş değer atanamaz. |
status |
nvarchar(30) | İsteğin durumu. Aşağıdaki değerlerden biri olabilir: arka plan Geri alma çalışıyor çalıştırılabilir uyku Askıya alınmış Boş değer 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: SEÇ INSERT GÜNCELLEME SİLMEK YEDEKLEME GÜNLÜĞÜ YEDEKLEME VERITABANı DBCC İÇİN İstek metni, istek için karşılık gelen sql_handle ile kullanılarak sys.dm_exec_sql_text 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:LOCK MONITOR CHECKPOINTLAZY YAZAR Boş değer 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 , statement_end_offset ve sys.dm_exec_sql_text dinamik yönetim işleviyle sql_handle birlikte 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 , statement_start_offset ve sys.dm_exec_sql_text dinamik yönetim işleviyle sql_handle birlikte 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. Boş değer 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. Boş değer atanamaz. |
connection_id |
benzersiz tanımlayıcı | İ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 0 ise NULL 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_id 0 .İş 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. 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. Boş değer atanamaz. |
last_wait_type |
nvarchar(60) | Bu istek daha önce engellenmişse, bu sütun son beklemenin türünü döndürür. Boş değer atanamaz. |
wait_resource |
nvarchar(256) | İstek şu anda engellenmişse, bu sütun isteğin şu anda beklediği kaynağı döndürür. Boş değer atanamaz. |
open_transaction_count |
int | Bu istek için açık olan işlem sayısı. Boş değer atanamaz. |
open_resultset_count |
int | Bu istek için açık olan sonuç kümelerinin sayısı. Boş değer atanamaz. |
transaction_id |
bigint | Bu isteğin yürütüldiği işlemin kimliği. Boş değer atanamaz. |
context_info |
varbinary(128) | Oturumun değerini CONTEXT_INFO. Nullable. |
percent_complete |
Gerçek | Aşağıdaki komutlar için tamamlanan çalışma yüzdesi:ALTER INDEX REORGANIZE AUTO_SHRINK seçeneği ALTER DATABASE BACKUP DATABASE DBCC CHECKDB DBCC CHECKFILEGROUP DBCC CHECKTABLE DBCC INDEXDEFRAG DBCC SHRINKDATABASE DBCC SHRINKFILE RECOVERY RESTORE DATABASE ROLLBACK TDE ENCRYPTION Boş değer atanamaz. |
estimated_completion_time |
bigint | Yalnızca dahili. Boş değer atanamaz. |
cpu_time |
int | İstek tarafından kullanılan milisaniye cinsinden CPU süresi. Boş değer atanamaz. |
total_elapsed_time |
int | İsteğin gelmesinden bu yana geçen toplam süre milisaniye cinsindendir. Boş değer 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ı. Boş değer atanamaz. |
writes |
bigint | Bu istek tarafından gerçekleştirilen yazma sayısı. Boş değer atanamaz. |
logical_reads |
bigint | İstek tarafından gerçekleştirilen mantıksal okuma sayısı. Boş değer atanamaz. |
text_size |
int | Bu istek için TEXTSIZE ayarı. Boş değer atanamaz. |
language |
nvarchar(128) | İstek için dil ayarı. Nullable. |
date_format |
nvarchar(3) | İstek için DATEFORMAT ayarı. Nullable. |
date_first |
smallint | İstek için DATEFIRST ayarı. Boş değer atanamaz. |
quoted_identifier |
bit | 1 = QUOTED_IDENTIFIER istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
arithabort |
bit | 1 = ARITHABORT ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
ansi_null_dflt_on |
bit | 1 = ANSI_NULL_DFLT_ON ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
ansi_defaults |
bit | 1 = ANSI_DEFAULTS ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
ansi_warnings |
bit | 1 = ANSI_WARNINGS ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
ansi_padding |
bit | 1 = ANSI_PADDING ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
ansi_nulls |
bit | 1 = ANSI_NULLS ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
concat_null_yields_null |
bit | 1 = CONCAT_NULL_YIELDS_NULL ayarı istek için ON'dır. Aksi takdirde, 0 olur. Boş değer atanamaz. |
transaction_isolation_level |
smallint | Bu istek için işlemin oluşturulduğu yalıtım düzeyi. Boş değer 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. Boş değer atanamaz. |
deadlock_priority |
int | İstek için DEADLOCK_PRIORITY ayarı. Boş değer atanamaz. |
row_count |
bigint | Bu istek tarafından istemciye döndürülen satır sayısı. Boş değer atanamaz. |
prev_error |
int | İsteğin yürütülmesi sırasında oluşan son hata. Boş değer atanamaz. |
nest_level |
int | İstekte yürütülen kodun geçerli iç içe yerleştirme düzeyi. Boş değer atanamaz. |
granted_query_memory |
int | İstekte sorgunun yürütülmesi için ayrılan sayfa sayısı. Boş değer 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. Boş değer atanamaz. |
group_id |
int | Bu sorgunun ait olduğu iş yükü grubunun kimliği. Boş değer atanamaz. |
query_hash |
ikili (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 |
ikili (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 |
benzersiz tanımlayıcı |
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 |
ikili (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ı. Boş değer atanamaz. |
dist_statement_id |
benzersiz tanımlayıcı |
Ş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. Boş değer 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. , writes
, logical_reads
ve row_count
sütunları reads
koordinatör iş parçacığı için güncelleştirilmez. , , last_wait_type
wait_time
, ve granted_query_memory
wait_resource
sütunları wait_type
yalnızca koordinatör iş parçacığı için güncelleştirilir. Daha fazla bilgi için
sütun, wait_resource
sys.dm_tran_locks ile benzer bilgiler resource_description
içerir ancak farklı biçimlendirilir.
İzinler
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=readonly
belirtmelidir. 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 sunucuda sys.dm_exec_requests
SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerekir.
Örnekler
A. Çalışan bir toplu iş için sorgu metnini bulma
Aşağıdaki örnek sorgu, ilginç sorguyu bulmak ve çıktıdan kopyalamak sql_handle
için sorgularsys.dm_exec_requests
.
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 sys.dm_exec_sql_text
kullanır CROSS APPLY
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 transaction_id
için sorgularsys.dm_exec_requests
.
SELECT * FROM sys.dm_exec_requests;
GO
Ardından, kilit bilgilerini bulmak için sistem işleviyle sys.dm_tran_locks
kopyalanan transaction_id
öğ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