Udostępnij za pośrednictwem


sys.dm_exec_query_plan (Transact-SQL)

plan wykonania zwraca w formacie XML do partia, określony przez dojście do planu.Plan określony przez dojście do planu albo można buforowane lub aktualnie wykonywanego.

Schemat XML the plan wykonania jest opublikowane i dostępne w tej witryna sieci Web firmy Microsoft.Jest również dostępny w katalogu gdzie SQL Server 2008 został zainstalowany.

Topic link iconKonwencje składni języka Transact-SQL

sys.dm_exec_query_plan ( plan_handle )

Argumenty

Zwracana tabela

Nazwa kolumna

Typ danych

Description

DBID

smallint

Identyfikator bazy danych kontekstu, który był w mocy podczas kompilowania instrukcji Transact-SQL odpowiedniej dla tego planu.W przypadku plików wsadowych ad hoc i przygotowanych wartość tej kolumny wynosi null.

Nazwa bazy danych, dla którego mają zostać zaktualizowany stan dublowanie.

objectid

int

Identyfikator obiektu (na przykład procedury składowanej lub funkcji zdefiniowanej przez użytkownika) dla tego planu kwerendy.W przypadku plików wsadowych ad hoc i przygotowanych wartość tej kolumny wynosi null.

Nazwa bazy danych, dla którego mają zostać zaktualizowany stan dublowanie.

numer

smallint

Wartość całkowita numerowanej procedury składowanej.Na przykład grupa procedur aplikacji orders może nosić nazwy orderproc;1, orderproc;2 i tak dalej.W przypadku plików wsadowych ad hoc i przygotowanych wartość tej kolumny wynosi null.

Nazwa bazy danych, dla którego mają zostać zaktualizowany stan dublowanie.

Występuje, gdy operacje na bazie danych wystąpią, takie jak punkt kontrolny lub subskrybować powiadomienie kwerendy.

bit

Jeśli stosowne informacje jest niedostępna, na przykład podczas ponownego uruchamiania serwera lub pracy awaryjnej kolumna również musi wartości NULL.

0 = bez szyfrowania

1 = z szyfrowaniem

Kolumna nie jest pustych.

query_plan

xml

Zawiera reprezentację planu wykonania kwerendy podczas kompilacji, który jest określony poprzez parametr plan_handle.Plan wykonania jest w formacie XML.Na każdy plik wsadowy jest tworzony jeden plan, który zawiera na przykład instrukcje ad hoc języka Transact-SQL, wywołania procedury składowanej i wywołania funkcji zdefiniowane przez użytkownika.

Nazwa bazy danych, dla którego mają zostać zaktualizowany stan dublowanie.

Remarks

W następujących warunkach nie plan wykonania dane wyjściowe są zwracane w query_plan zwrócone w tabela kolumnasys.dm_exec_query_plan:

  • Jeśli planowane kwerendę, która jest określona przy użyciu plan_handle ma został usunięty z pamięci podręcznej plan query_plan kolumna tabela, zwracane jest zerowy.Na przykład warunek ten może wystąpić, jeśli występuje opóźnienie czas między Kiedy dojście planu została przechwycona, a gdy był używany z sys.dm_exec_query_plan.

  • Niektóre Transact-SQL deklaracje nie są buforowane, takie jak operacji zbiorczej instrukcje lub sprawozdania zawierające literały ciągów znaków większej niż 8 KB rozmiarze. Nie można pobrać Showplans XML dla tych instrukcji przy użyciu sys.dm_exec_query_plan , chyba że partia jest aktualnie wykonywanych, ponieważ nie istnieją one w pamięci podręcznej.

  • Jeśli Transact-SQL przechowywane procedury wsadowej lub zawiera wywołanie funkcja zdefiniowanej przez użytkownika lub wywołanie dynamicznego SQL, na przykład przy użyciu EXEC)string), skompilowane plan wykonania XML dla funkcja zdefiniowanej przez użytkownika nie jest uwzględniony w tabela zwrócone przez sys.dm_exec_query_plan dla partia lub procedura przechowywana.Zamiast tego które należy wykonać oddzielne wywołanie sys.dm_exec_query_plan dla dojścia planu, który odpowiada funkcja zdefiniowanej przez użytkownika.

Gdy kwerendy ad hoc używa prostego lub wymuszonego parametryzacji, query_plan kolumna będzie zawierać tylko tekst instrukcja i nie planu rzeczywistego kwerendy.Aby przywrócić planu kwerend, należy skontaktować się telefonicznie sys.dm_exec_query_plan dla dojścia plan przygotowany kwerendy parametryczne.Można określić, czy kwerenda została sparametryzowana przy odwoływaniu się do SQL kolumnasys.syscacheobjects widoku lub kolumna tekstu sys.dm_exec_sql_text dynamicznego zarządzania widoku.Aby uzyskać więcej informacji na temat, zobacz parametry Parametryzacja proste i Parametryzacja wymuszony.

Ze względu na ograniczenie liczby poziomów zagnieżdżonych w xml Typ danych sys.dm_exec_query_plan nie będzie można przywrócić planów kwerend, które spełnia lub przekracza 128 poziomów zagnieżdżonych elementów.We wcześniejszych wersjach SQL Server, ten warunek uniemożliwił planu kwerend przekazujących dane i generuje błąd 6335. W SQL Server 2005 Z dodatkiem usługa Pack 2 i nowszych wersji query_plan kolumna zwraca wartość NULL.Można użyć sys.dm_exec_text_query_plan (Transact-SQL) dynamiczne zarządzanie funkcja zwracająca dane wyjściowe tego planu kwerend w formacie tekstowym.

Uprawnienia

Do wykonać sys.dm_exec_query_plan, użytkownik musi należeć do sysadmin stałych roli serwera lub mieć uprawnienia VIEW SERVER STATE na serwerze.

Przykłady

Następujące przykłady przedstawiają metody korzystania z sys.dm_exec_query_plan dynamicznego zarządzania widoku.

Aby wyświetlić Showplans XML, wykonywać następujące kwerendy w edytorze kwerendy z SQL Server Management Studio, następnie kliknij przycisk ShowPlanXML in the query_plan kolumnie tabela zwrócone przez sys.dm_exec_query_plan.Wyświetla plan wykonania XML Management Studio okienko Podsumowanie. Aby zapisać plan wykonania XML do pliku, kliknij prawym przyciskiem myszy ShowPlanXML in the query_plan Kolumna kliknijZapisz wyniki jako, nazwę pliku w formacie <nazwa_pliku>.sqlplan; na przykład MyXMLShowplan.sqlplan.

A.Jeśli zabezpieczany jest widok wszystkich środków DELETE, INSERT, materiały referencyjne, SELECT i UPDATE.

Plany kwerend dla różnych typów Transact-SQL partie, takie jak instancje ad hoc, procedur przechowywanych i funkcji zdefiniowanych przez użytkownika są buforowane w obszarze pamięci, zwanej pamięcią podręczną planu. Każdy buforowanego planu kwerend, jest identyfikowany przez identyfikator unikatowy, o nazwie dojścia do planu.Można określić to dojście planu z sys.dm_exec_query_plan pobrać plan wykonania dla określonego dynamiczny widok zarządzaniaTransact-SQL kwerendy lub partia.

Jeśli Transact-SQL kwerendy lub program wsadowy jest uruchamiany przez długi czas dla określonego połączenia, aby SQL Server, pobrać plan wykonania dla tej kwerendy lub partia do wykrywania, co jest przyczyną opóźnienia. W poniższym przykładzie pokazano, jak pobrać plan wykonania XML kwerendy spowolnić uruchamianie lub partia.

Uwaga

Aby uruchomić ten przykład, Zastąp wartości dla session_id i plan_handle o wartościach specyficznych dla serwera.

Najpierw , przy użyciu procedury składowanej sp_who pobierz identyfikator procesu serwera (SPID), który wykonuje kwerendę lub plik wsadowy:

USE master;
GO
exec sp_who;
GO

Zestaw wyników, która zostanie zwrócona przez sp_who Wskazuje, że identyfikator SPID 54. Można użyć identyfikatora SPID z sys.dm_exec_requests dynamiczny widok zarządzania w celu pobrania dojścia plan za pomocą następującej kwerendy:

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

tabela, która jest zwracany przez sys.dm_exec_requests wskazuje, że plan obsługę spowolnić działanie kwerendy lub partia jest 0x06000100A27E7C1FA821B10600, którą można określić jako plan_handle argument z sys.dm_exec_query_plan Aby pobrać plan wykonania w formacie XML w następujący sposób. Plan wykonania w formacie XML spowolnić działanie kwerendy lub program wsadowy jest zawarty w query_plan kolumnie tabela zwrócone przez sys.dm_exec_query_plan.

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

B.Jest nazwą obiektem.

Pobrać migawkę wszystkich planów kwerend znajdujących się w pamięci podręcznej plan, należy pobrać uchwyty planu wszystkich planów kwerendy w pamięci podręcznej za pomocą kwerend wysyłanych do sys.dm_exec_cached_plans dynamiczny widok zarządzania. Uchwyty plan są przechowywane w plan_handle kolumna sys.dm_exec_cached_plans. Następnie za pomocą operator pytania mają zastosowania przekazać dojścia planu do sys.dm_exec_query_plan w następujący sposób. plan wykonania XML wyjściowy dla każdego z programów znajdujących się aktualnie w pamięci podręcznej plan jest w query_plan Kolumna tabela, która zostanie zwrócona.

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

C.Pobierz z pamięci podręcznej planu poszczególne plany kwerendy, dla których serwer zebrał statystyki kwerendy.

W celu pobrania wszystkich planów kwerendy, dla którego na serwerze są zebrane dane statystyczne, które aktualnie znajdują się w pamięci podręcznej planu migawka, pobrać uchwyty planu tych planów w pamięci podręcznej za pomocą kwerend wysyłanych do sys.dm_exec_query_stats dynamiczny widok zarządzania. Uchwyty plan są przechowywane w plan_handle kolumna sys.dm_exec_query_stats. Następnie za pomocą operator pytania mają zastosowania przekazać dojścia planu do sys.dm_exec_query_plan w następujący sposób. plan wykonania XML wyjściowy dla każdego planu, dla których serwer zebrał statystyki aktualnie w pamięci podręcznej plan jest w query_plan Kolumna tabela, która zostanie zwrócona.

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

D.Pobierz z informacje o pięciu kwerendach o najwyższej wartości średniego czasu procesora CPU.

W poniższym przykładzie są zwracane planów i średni czas PROCESORA dla górnego kwerend pięć.

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