Share via


sys.dm_exec_text_query_plan (Transact-SQL)

Metin biçiminde gösterim planı işlevi bir Transact-SQL Toplu iş veya toplu iş içinde belirli bir deyim. Sorgu planı plan tanıtıcıyla ya da önbelleğe alınmış veya şu anda yürütülen olabilir belirtildi.Bu tablo değerli işlev benzer sys.dm_exec_query_plan (Transact-SQL), ancak aşağıdaki farklılıkları vardır:

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

  • Sorgu planı çıkış boyutu sınırlıdır.

  • Toplu iş içinde tek tek ifadeleri belirtilebilir.

Topic link iconTransact-SQL sözdizimi kuralları

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
    Uniquely identifies a query plan for a batch that is cached or is currently executing.plan_handle is varbinary(64).

    Aşağıdaki dinamik yönetimi nesnelerden planı tanıtıcı elde edilebilir:

    sys.dm_exec_cached_plans

    sys.dm_exec_query_stats

    sys.dm_exec_requests

  • statement_start_offset | 0 | VARSAYILAN
    Indicates, in bytes, the starting position of the query that the row describes within the text of its batch or persisted object.statement_start_offset is int.0 Değeri, toplu iş iş işin başlangıç gösterir.Varsayılan değer 0’dır.

    Aşağıdaki dinamik yönetimi nesnelerden deyim başlangıç uzaklığı elde edilebilir:

    sys.dm_exec_query_stats

    sys.dm_exec_requests

  • statement_end_offset | -1 | VARSAYILAN
    Toplu iş ya da kalıcı nesne içindeki metin satırı tanımlayan sorgu bitiş pozisyonunu gösterir (bayt cinsinden).

    statement_start_offset olan int.

    -1 Değeri, toplu iş iş işin bitiş gösterir.Varsayılan değer -1’dır.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

DBID

smallint

Etkin olan bir içerik veritabanı KIMLIĞI, Transact-SQL Bu plan için karşılık gelen deyim derlendi. Ad hoc ve hazırlıklı toplu işlemler için bu sütun olan null.

sütun null.

ObjectId

int

Nesnenin KIMLIĞI (örneğin, saklı yordamını veya kullanıcı tanımlı işlev) için bu sorgu planı.Ad hoc ve hazırlıklı toplu işlemler için bu sütun olan null.

sütun null.

number

smallint

Numaralı saklı yordam tamsayı.Örneğin, bir grup hakkındaki yordamlar için Siparişler uygulama adlandırılmış olabilirorderproc; 1, orderproc; 2ve böyle devam eder.Ad hoc ve hazırlıklı toplu işlemler için bu sütun olan null.

sütun null.

Şifreli dosya

bit

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

0 = şifreli değil

1 = şifrelenmiş

Sütun null değil.

query_plan

nvarchar(max)

Sorgu yürütme planı ile belirtilen derleme gösterim planı gösterimini içerir plan_handle. gösterim planı metin biçimindedir.Bir planı, örneğin ad hoc içeren her bir toplu iş için üretilir Transact-SQL ifadeler, saklı yordam çağrıları ve kullanıcı tanımlı bir işlev çağrısı.

sütun null.

Remarks

Aşağıdaki koşullar altında gösterim planı çıktı iade planı için döndürülen bir tablo sütunsys.dm_exec_text_query_plan:

  • Sorgu, düşünüyorsanız, kullanılarak belirtilir plan_handle plan önbellekten çıkarılacak query_plan döndürülen tablonun null sütundur.saat planı tanıtıcı yakalandığı saat ile kullanılan arasındaki gecikme saat varsa, bu durum oluşabilir sys.dm_exec_text_query_plan.

  • Bazı Transact-SQL deyimlerini, toplu işlem olarak önbelleğe alınmaz ifadeleri ya da dize hazır bilgi boyutu 8 KB boyutundan içeren ifadeleri. Bu tür tablolar için Showplans kullanarak alınamıyor. sys.dm_exec_text_query_plan önbellekte kayıtlı olduğundan.

  • Varsa bir Transact-SQL toplu iş iş iş veya saklı yordam çağrısı kullanarak EXEC (örneğin, dinamik SQL veya kullanıcı tanımlı bir işlev bir çağrı içerir.string), derlenmiş XML gösterim planı'kullanıcı tanımlı işlevi tarafından döndürülen bir tablo yer almaz sys.dm_exec_text_query_plan toplu iş iş veya saklı yordam.Bunun yerine, ayrı bir çaðrý yapmalısınız. sys.dm_exec_text_query_plan for the plan_handle Kullanıcı tanımlı işleve karşılık gelir.

Ad hoc sorgusu parameterization, basit veya Zorlanmış kullandığında query_plan sütun yalnızca açıklama metni ve gerçek bir sorgu planı içerir.Sorgu planı dönmek için , arama sys.dm_exec_text_query_plan için hazırlıklı parametreli sorgu planı tanıtıcısı.Sorgu başvurarak parametreli olup olmadığını belirlemek SQL sütunsys.syscacheobjects ya da metin sütunu görünümüsys.dm_exec_sql_text dinamik yönetimi görüntüleyin.Daha fazla bilgi için bkz: parameterization hakkında Basit Parameterization ve Zorlanmış Parameterization.

İzinler

Yürütmek için sys.dm_exec_text_query_plan, kullanıcının üyesi olması gerekirsysadmin sabit sunucu rolü veya sunucuda VIEW SERVER DURUM izninizin.

Örnekler

C.Önbelleğe alınan sorgu planı yavaş çalışan Transact-SQL sorgusu veya toplu iş iş olarak alma

Varsa bir Transact-SQL sorgu veya toplu iş için belirli bir bağlantıda uzun bir saat çalışır SQL Server, gecikme neden olduğunu bulmak için sorgu veya toplu iş yürütme planı almak. Aşağıdaki örnek, yavaş çalışan sorgu veya toplu iş için gösterim planı alma gösterilmiştir.

Not

Bu örnek çalıştırmak için , değerleri değiştirin. session_id ve plan_handle sunucunuz için belirli değerleri ile.

Önce sorgu veya toplu iş kullanarak çalıştırdığından işlem için sunucu işleminin KIMLIĞI'ni (SPID) alma sp_who saklı yordam:

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 plan tanıtıcı, aşağıdaki sorguyu kullanarak almak için dinamik yönetim görünümü:

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

Tarafından döndürülen bir 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, belirtilen planı tanıtıcı için sorgu planını verir ve sorgu veya toplu iş iş iş tüm ifadeleri dönmek için varsayılan değerleri 0 ile -1'i kullanır.

b.Her bir sorgu planı plan önbellekten

Bir plan önbelleğinde bulunan tüm sorgu planlarını görüntüsünü almak için , önbellekteki tüm sorgu planlarını planı tutamaçlarını sorgulayarak almak sys.dm_exec_cached_plans dinamik yönetim görünümü. Plan tanıtıcıları saklanan plan_handle sütun sys.dm_exec_cached_plans. Sonra için plan tanıtıcıları geçirmek için çapraz APPLY işlecini kullanın... sys.dm_exec_text_query_plan aşağıdaki gibi. ' De şu anda planı önbelleğindeki her plan için çıkış gösterim planı query_plan sütun tablo, döndürdü.

c.Her sorgu planı için sunucu planı önbelleğinden sorgu istatistiklerini topladı alma

Sunucu planı önbelleğinde bulunan toplanan istatistikleri sahip olan tüm sorgu planlarını, anlık görüntü almak için , bu planlardan önbelleğindeki planı tutamaçlarını sorgulayarak almak sys.dm_exec_query_stats dinamik yönetimi görüntüleyin. Plan tanıtıcıları saklanan plan_handle sütun sys.dm_exec_query_stats. Sonra için plan tanıtıcıları geçirmek için çapraz APPLY işlecini kullanın... sys.dm_exec_text_query_plan aşağıdaki gibi. Bulunan her plan için çıkış gösterim planı query_plan Sütun tablonun döndürülür.

d.Ortalama CPU tarafından ilk beş sorgular hakkında bilgi almak saat

Aşağıdaki örnek, sorgu planları ve üst beş sorguları için ortalama CPU süresini verir.The sys.dm_exec_text_query_plan işlev specifies the default values 0 and -1 to return all statements in the toplu iş in the query plan.