Share via


sys.dm_exec_text_query_plan (Transact-sql)

Showplan metin biçiminde verir bir Transact-SQLtoplu veya belirli bir deyimi içinde toplu. Sorgu planı plan tanıtıcısı tarafından önbelleğe alınmış veya şu anda yürütülen olabilir belirtti. Tablo valued işlev benzer sys.dm_exec_query_plan (Transact-sql), ancak aşağıdaki farklar vardır:

  • Sorgu planı çıktı metin biçiminde gönderilir.

  • Sorgu planı çıktı boyutu sınırlı değil.

  • Tek tek deyimleri toplu iş içinde belirtilebilir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sys.dm_exec_text_query_plan 
( 
    plan_handle 
    , { statement_start_offset | 0 | DEFAULT }
        , { statement_end_offset | -1 | DEFAULT }
)

Bağımsız değişkenler

  • plan_handle
    Bir sorgu planı önbelleğe alınır veya yürütülmekte olan bir toplu iş için benzersiz olarak tanımlar. plan_handleis varbinary(64).

    Aşağıdaki dinamik yönetimi nesneleri planı ele alınabilir:

    içinsys.dm_exec_cached_plansDinamik

    sys.dm_exec_query_stats

    sys.dm_exec_requests

  • statement_start_offset | 0 | VARSAYILAN
    , Kendi toplu iş veya kalıcı nesne içindeki metni satır açıklar sorgu başlangıç konumunu bayt cinsinden gösterir. statement_start_offset is int. 0 Değeri, toplu iş başında gösterir. Varsayılan değer 0'dır.

    Deyimini başlangıç uzaklığı aşağıdaki dinamik yönetimi nesneleri elde edilebilir:

    sys.dm_exec_query_stats

    sys.dm_exec_requests

  • statement_end_offset | -1 | VARSAYILAN
    , Kendi toplu iş veya kalıcı nesne içindeki metni satır açıklar sorgu bitiş konumunu bayt cinsinden gösterir.

    statement_start_offset is int.

    -1 Değeri, sonunda toplu gösterir. -1 Varsayılan değerdir.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

DBID

smallint

Etkin olarak içerik veritabanı Kımlığı ne zaman Transact-SQLbu plana karşılık gelen deyimi derlenmiş. Geçici ve hazırlanmış sql deyimleri için ifadeler nerede derlendi veritabanı Kımlığı.

NULL olabilecek sütundur.

ObjectId

int

Bu sorgu planı için (örneğin, saklı yordam veya kullanıcı tanımlı bir işlev) nesne Kımlığı. Geçici ve hazırlanan toplu işlemleri için bu sütunda ise boş.

NULL olabilecek sütundur.

Sayı

smallint

Numaralandırılmış saklı yordam tamsayı. Yordamları için bir grup siparişleri uygulaması adlandırılmış orderproc; 1, orderproc; 2ve bu böylece devam eder. Geçici ve hazırlanan toplu işlemleri için bu sütunda ise boş.

NULL olabilecek sütundur.

şifreli

bit

İlgili saklı yordam şifreli olup olmadığını gösterir.

0 = şifreli değil

1 = şifreli

Sütun NULL olabilecek değil.

sys.dm_exec_query_planquery_plan

nvarchar(max)

İle belirtilen sorgu yürütme planı derlemezamanı Showplan gösterimini içerir plan_handle. Showplan metin biçimidir. Bir planı oluşturulan içerir, örneğin geçici her toplu işlem için Transact-SQLdeyimleri, saklı yordam çağrıları ve kullanıcı tanımlı bir işlev çağrıları.

NULL olabilecek sütundur.

Açıklamalar

Showplan çıkış döndürülür aşağıdaki koşullar altında plan sütun için döndürülen tablo sys.dm_exec_text_query_plan:

  • Sorgu planı kullanarak belirtilen plan_handletahliye planı önbellekten sys.dm_exec_query_planquery_plan döndürülen tablo sütun null. Ne zaman planı ele yakalandığı ve ne zaman birlikte kullanıldığı arasında gecikme süresi ise, bu durum oluşabilir sys.dm_exec_text_query_plan.

  • Bazı Transact-SQLdeyimleri önbelleğe, toplu işlem bildirimleri veya deyimleri içeren dize harflerin büyüklüğü 8 KB'den daha büyük gibi. Adresinden alındı Showplans gibi ifadeler için can't kullanarak sys.dm_exec_text_query_plan önbellekte yok çünkü.

  • Eğer bir Transact-SQLtoplu iş veya saklı yordam içeren kullanıcı tanımlı bir işlev çağrısı ya da örneğin exec kullanarak dinamik sql çağrısı (string), kullanıcı tanımlı bir işlev tarafından döndürülen tablo dahil değildir için xml Showplan derlenmiş sys.dm_exec_text_query_plan toplu iş veya saklı yordam. Bunun yerine, ayrı arama yapmak gerekir sys.dm_exec_text_query_plan için plan_handlekullanıcı tanımlı işleve karşılık gelen.

Bir ad hoc sorgu basit veya Zorlanmış parameterization kullandığında sys.dm_exec_query_planquery_plan sütun yalnızca açıklama metni ve değil gerçek sorgu planı içerir. Sorgu planı dönün çağrısı sys.dm_exec_text_query_plan için hazırlanan Parametreli sorgu planı tanıtıcı. Başvurarak sorgu parametreli olup olmadığını belirlemek için sql sütununda eşleştirirsys.syscacheobjectsgeriye görünümü veya metin sütununun sys.dm_exec_sql_text dinamik yönetimi görüntüleyin. PARAMETERIZATION görmek hakkında daha fazla bilgi için Simple Parameterizationve Forced Parameterization.

İzinler

Yürütülecek sys.dm_exec_text_query_plan, bir kullanıcı bir üyesi olmanız sysadmin sabit sunucu rolü veya sunucuda VIEW server state iznine sahip.

Örnekler

A.Yavaş çalışan Transact-sql sorgu veya toplu iş için önbelleğe alınan sorgu planı alınıyor

Eğer bir Transact-SQLsorgu veya toplu iş için belli bir bağlantıda uzun bir süre çalışan SQL Server, bu sorgu için yürütme planı almak veya ne gecikmeye neden keşfetmek için toplu. Aşağıdaki örnek, yavaş çalışan sorgu veya toplu Showplan almak nasıl gösterir.

[!NOT]

Bu örneği çalıştırmak için değerleri değiştirmek session_idve plan_handledeğerlerle sunucunuza özel.

Sunucu işlem Kımlığı (SPID) kullanarak sorgu veya toplu iş yürütme işlemi için alın sp_whosaklı yordamı:

USE master;
GO
EXEC sp_who;
GO

USE master;
GO
EXEC sp_who;
GO

Tarafından döndürülen sonuç kümesi sp_ who SPID olduğunu gösterir 54. SPID ile kullanabileceğiniz sys.dm_exec_ requests dinamik yönetimi görünümü aşağıdaki sorguyu kullanarak planı ele almak için:

USE master;
GO
SELECT * FROM sys.dm_exec_requests
WHERE session_id = 54;
GO

USE master;
GO
SELECT * FROM sys.dm_exec_requests
WHERE session_id = 54;
GO

Tarafından döndürülen tablo sys.dm_exec_requests yavaş çalışan sorgu veya toplu iş planı tanıtıcı olduğunu gösterir 0x06000100A27E7C1FA821B10600. Aşağıdaki örnek, sorgu planı için belirtilen planı ele verir ve varsayılan değerleri 0 ile -1 tüm tablolar sorgu veya toplu iş içinde kullanır.

USE master;
GO
SELECT query_plan 
FROM sys.dm_exec_text_query_plan (0x06000100A27E7C1FA821B10600,0,-1);
GO

B.Her sorgu planı planı önbellekten alınıyor

Tüm sorgu planları önbelleğe planı kolları anlık görüntüsünü plan önbelleğinde bulunan tüm sorgu planları almak için sorgulayarak almak sys.dm_exec_cached_ plans dinamik yönetimi görünümü. Planı kolları depolanır plan_ handle sütununda sys.dm_exec_cached_plans. cross apply işleci planı tanıtıcıları sonra kullan sys.dm_exec_text_query_ plan gibi. Her planı plan önbelleğinde bulunan için çıkış Showplan query_ plan döndürülen tablo sütun.

USE master;
GO
SELECT * 
FROM sys.dm_exec_cached_plans AS cp 
CROSS APPLY sys.dm_exec_text_query_plan(cp.plan_handle, DEFAULT, DEFAULT);
GO

C.Hangi sunucu planı önbellekten sorgu istatistikleri topladı her sorgu planı alınıyor

Tüm sorgu planları için hangi sunucunun sahip plan önbelleğinde halen toplanan istatistikleri anlık görüntü almak için bu planları önbelleğe planı kolları sorgulayarak almak sys.dm_exec_query_ stats dinamik yönetimi görünümü. Planı kolları depolanır plan_ handle sütununda sys.dm_exec_query_stats. cross apply işleci planı tanıtıcıları sonra kullan sys.dm_exec_text_query_ plan gibi. Showplan çıkış için her planı içinde query_plandöndürülen tablo sütun.

USE master;
GO
SELECT * FROM sys.dm_exec_query_stats AS qs 
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, qs.statement_start_offset, qs.statement_end_offset);
GO

D.Ortalama cpu zamanı tarafından üst beş sorgular hakkında bilgi alma

Aşağıdaki örnek sorgu planları ve ortalama cpu süresi üst beş sorguları için döner. Sys.dm_exec_text_query_plan işlevi 0 ve -1 tüm deyimleri toplu işleme sorgu planını dönmek için varsayılan değerleri belirtir.

SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
Plan_handle, query_plan 
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, 0, -1)
ORDER BY total_worker_time/execution_count DESC;
GO

Ayrıca bkz.

Başvuru

sys.dm_exec_query_plan (Transact-sql)

Kavramlar

Using APPLY

Diğer Kaynaklar

Analyzing a Query