sys.dm_exec_query_plan (języka Transact-SQL)

Showplan zwraca w formacie XML dla partia określonego przez dojście do planu.Plan określony przez dojście do planu można albo być buforowane lub aktualnie.

Schemat XML Showplan jest opublikowane i dostępne w witryna sieci Webfirmy Microsoft.Jest również dostępny w katalogu gdzie SQL Server 2008 jest zainstalowany.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sys.dm_exec_query_plan ( plan_handle )

Argumenty

Zwracana tabela

Nazwa kolumny

Typ danych

Opis

Identyfikator DBID

smallint

Identyfikator kontekstu bazy danych, które obowiązywały w po Transact-SQL instrukcja odpowiadającej plan ten został skompilowany.W przypadku partii ad hoc i przygotowany w tej kolumna jest null.

Kolumna jest nullable.

Identyfikator obiektu

int

Identyfikator obiektu (na przykład procedura składowana lub funkcjazdefiniowanej przez użytkownika) dla tego planu kwerend.W przypadku partii ad hoc i przygotowany w tej kolumna jest null.

Kolumna jest nullable.

liczba

smallint

Liczba całkowita numerowanych procedura składowana .Na przykład, grupa procedury zamówienia aplikacji mogą być nazwane orderproc; 1, orderproc; 2i tak dalej.W przypadku partii ad hoc i przygotowany w tej kolumna jest null.

Kolumna jest nullable.

szyfrowane

bit

Wskazuje, czy odpowiednie procedura składowana jest szyfrowany.

0 = nie zaszyfrowany

1 = zaszyfrowanych

Kolumna nie jest nullable.

query_plan

xml

Zawiera kompilacji -czas Showplan reprezentację plan wykonania kwerend, określoną z plan_handle.Showplan jest w formacie XML.Jeden plan jest generowany dla każdej partia zawierającym, na przykład ad hoc Transact-SQL instrukcje, wywołań procedura składowana i wywołań funkcja zdefiniowanej przez użytkownika.

Kolumna jest nullable.

Uwagi

W następujących warunkach wyjściowego Showplan nie jest zwracany w query_plan kolumna zwrócone tabela dla sys.dm_exec_query_plan:

  • Jeśli planowane kwerendy, która jest określana za pomocą plan_handle został wykluczony z pamięci podręcznej planu query_plan kolumna zwrócone tabela jest null.Na przykład, warunek ten może wystąpić, jeśli czas sys.dm_exec_query_plan.

  • Niektóre Transact-SQL instrukcji nie są buforowane, takich jak instrukcje operacji luzem lub instrukcji zawierających literały ciągów ciąg większej niż 8 KB w rozmiarze.Showplans XML dla takich sprawozdań nie można pobrać za pomocą sys.dm_exec_query_plan , chyba że partia obecnie jest wykonywana, ponieważ nie istnieją w pamięci podręcznej.

  • Jeśli Transact-SQL procedura składowanapartia lub zawiera wywołanie funkcja zdefiniowanej przez użytkownika lub wywołanie dynamicznego SQL, na przykład za pomocą EXEC ( string), skompilowany XML Showplan dla funkcja zdefiniowanej przez użytkownika nie znajduje się w tabela zwrócone przez sys.dm_exec_query_plan dla partia lub procedura składowana.Zamiast tego należy wykonać osobnej wywołania sys.dm_exec_query_plan dla dojścia plan odpowiadający funkcjazdefiniowanej przez użytkownika.

Gdy kwerend ad hoc używa prostego lub wymuszonego parametryzacji query_plan kolumna będzie zawierać tylko tekst instrukcja i nie planu kwerend rzeczywiste.Aby przywrócić planu kwerend, wywołanie sys.dm_exec_query_plan dla dojścia plan przygotowany sparametryzowanych kwerend.Można określić, czy kwerenda została sparametryzowana przy odwoływaniu się do sql kolumna sys.syscacheobjects widok lub tekst kolumna z sys.dm_exec_sql_text dynamiczny widok zarządzania.Aby uzyskać więcej informacji, zobacz temat parametryzacji Parametryzacja proste i Parametryzacja wymuszony.

Ze względu na to ograniczenie liczby poziomów zagnieżdżenia dozwolone w xml typu danych, sys.dm_exec_query_plan nie może zwrócić planów kwerend, które spełniają lub przekraczają 128 poziomów zagnieżdżonych elementów.W starszych wersjach SQL Server, ten warunek uniemożliwił planu kwerend przekazujących dane i generuje błąd 6335.W SQL Server 2005 Service Pack 2 i nowszych wersji, query_planto funkcjakolumna zwraca wartość NULL. Można użyć sys.dm_exec_text_query_plan (języka Transact-SQL) funkcja dynamicznego zarządzania zwraca wyjścia planu kwerend w formacie tekstowym.

Uprawnienia

wykonaćsys.dm_exec_query_plan, użytkownik musi być element członkowski sysadminstała rola serwera albo mieć uprawnienie WYŚWIETL stan serwera na serwerze.

Przykłady

Następujące przykłady przedstawiają metody korzystania sys.dm_exec_query_plan dynamiczny widok zarządzania.

Aby wyświetlić XML Showplans, wykonać następujące kwerendy w edytorze kwerendy z SQL Server Management Studio, kliknij przycisk ShowPlanXML w query_plan kolumna tabela zwrócone przez sys.dm_exec_query_plan.XML Showplan są wyświetlane w Management Studio okienko podsumowania.Aby zapisać plik XML Showplan, kliknij prawym przyciskiem myszy ShowPlanXML w query_plan kolumna, kliknij przycisk Zapisz wyniki jako, nazwę pliku w formacie <nazwa_pliku>.sqlplan; na przykład MyXMLShowplan.sqlplan.

A.Pobrać buforowanego planu kwerend dla spowolnić działanie kwerendy języka Transact -SQL lub partia

Kwerenda plany dla różnych typów Transact-SQL partii, takich jak instancje ad hoc, procedury przechowywane i funkcje zdefiniowane przez użytkownika są buforowane w obszarze pamięci o nazwie pamięci podręcznej planu.Każdy buforowanego planu kwerend jest identyfikowany przez identyfikator unikatowy, o nazwie uchwyt planu.Można określić ten plan uchwyt z sys.dm_exec_query_plan dynamiczny widok zarządzania pobrać plan wykonania dla danego Transact-SQL kwerendy lub partia.

Jeśli Transact-SQL kwerendy lub program partia jest uruchamiany dużo czas dla określonego połączenia, aby SQL Server, pobrać plan wykonania dla tej kwerendy lub partia do wykrywania, co jest przyczyną opóźnienia.Poniższy przykład pokazuje jak pobrać Showplan XML spowolnić działanie kwerendy lub partia.

Ostrzeżenie

Aby uruchomić ten przykład, należy zastąpić wartości dla session_id i plan_handle z wartości specyficznych dla serwera.

Najpierw należy pobrać proces serwera ID (SPID) dla procesu wykonywania kwerendy lub partia przy użyciu sp_who procedura składowana:

USE master;
GO
exec sp_who;
GO

zestaw wyników zwracanego przez sp_who wskazuje, że identyfikator SPID jest 54.Użyj identyfikatora SPID z sys.dm_exec_requests dynamiczny widok zarządzania pobrać uchwytu plan za pomocą następującej kwerendy:

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

tabela jest zwracany przez sys.dm_exec_requests wskazuje, że plan obsługę spowolnić działanie kwerendy lub partia jest 0x06000100A27E7C1FA821B10600, określany jako plan_handle argumentu z sys.dm_exec_query_plan pobrać plan wykonania w formacie XML, jak następuje.Plan wykonania w formacie XML spowolnić działanie kwerendy lub partia znajduje się w query_plan kolumna tabela zwrócone przez sys.dm_exec_query_plan.

USE master;
GO
SELECT * FROM sys.dm_exec_query_plan (0x06000100A27E7C1FA821B10600);
GO

B.Pobieranie z pamięci podręcznej planu każdego planu kwerend

Aby pobrać migawka wszystkich planów kwerend znajdujących się w pamięci podręcznej planu, pobrać uchwyty plan wszystkich planów kwerend w pamięci podręcznej przez badanie sys.dm_exec_cached_plans dynamiczny widok zarządzania.Uchwyty planu są przechowywane w plan_handle kolumna sys.dm_exec_cached_plans.Uchwyty plan, aby przekazać za pomocą granic ZASTOSOWAĆ operator sys.dm_exec_query_plan w następujący sposób.Showplan XML, wyjściowy dla każdego planu aktualnie w pamięci podręcznej plan jest w query_plan kolumna tabela , która jest zwracana.

USE master;
GO
SELECT * FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle);
GO

C.Pobrać każdego planu kwerend, dla którego serwer zebrał statystyki kwerendy z pamięci podręcznej plan

Aby pobrać migawka wszystkich planów kwerend, dla którego serwer ma zebrane statystyki, które aktualnie znajdują się w pamięci podręcznej planu, pobrać uchwyty planu tych planów w pamięci podręcznej przez badanie sys.dm_exec_query_stats dynamiczny widok zarządzania.Uchwyty planu są przechowywane w plan_handle kolumna sys.dm_exec_query_stats.Uchwyty plan, aby przekazać za pomocą granic ZASTOSOWAĆ operator sys.dm_exec_query_plan w następujący sposób.Showplan XML, wyjściowy dla każdego planu, dla którego serwer zebrał statystyki aktualnie w pamięci podręcznej plan jest w query_plan kolumna tabela , która jest zwracana.

USE master;
GO
SELECT * FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);
GO

D.Pobranie informacji o górnym kwerend pięciu Procesora średni czas

Poniższy przykład zwraca planów i średnia Procesora czas górny pięciu kwerend.

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_query_plan(qs.plan_handle)
ORDER BY total_worker_time/execution_count DESC;
GO