sys.dm_exec_text_query_plan (Transact-SQL)
Zwraca plan wykonania w formacie tekstowym dla zadania wsadowego języka Transact-SQL lub konkretnej instrukcji w zadaniu wsadowym.Plan wykonywania zapytań określony w dojściu do planu może być zapisany w pamięci podręcznej lub aktualnie wykonywany.Ta funkcja zwracająca tabele jest podobna do procedury składowanej sys.dm_exec_query_plan (Transact-SQL), jednak istnieją też pewne różnice:
Wynik planu wykonania zapytań jest zwracany w formacie tekstowym.
W przeciwnym razie widok może dawać nieoczekiwane wyniki, gdy jest on kwerendy.
Wymaga ALTER w widoku i uprawnienie materiały referencyjne w popularnych typów języka (CLR) w czasie wykonywania przez użytkownika i kolekcji schematu XML, do których odwołuje się w kolumnach widoku.
sys.dm_exec_text_query_plan
(
plan_handle
, { statement_start_offset | 0 | DEFAULT }
, { statement_end_offset | -1 | DEFAULT }
)
Argumenty
plan_handle
Uniquely identifies a query plan for a batch that is cached or is currently executing.plan_handle is varbinary(64).Dojście do planu można uzyskać z następujących obiektów zarządzania dynamicznego:
statement_start_offset | 0 | DOMYŚLNE
Wskazuje (w bajtach) pozycję w treści zadania wsadowego lub w obiekcie trwałym, od której rozpoczyna się wykonywanie zapytania opisywanego przez wiersz.Parametr statement_start_offset jest typu int.Wartość 0 oznacza początek zadania wsadowego.Wartość domyślna to 0.sp_dbmmonitorupdate (języka Transact-SQL)
statement_end_offset | -1 | DOMYŚLNE
Aktualizacje dublowanie bazy danych monitorowania stanu tabela przez wstawienie nowego wiersza tabela dla każdego dublowane bazy danych i obcina starsze niż bieżący okres przechowywania wierszy.statement_start_offset jest int.
Domyślny okres zachowywania wynosi 7 dni (168 godzin).Wartość domyślna to -1.
Zwracana tabela
Nazwa kolumna |
Typ danych |
Description |
|---|---|---|
DBID |
smallint |
Identyfikator kontekstu bazy danych obowiązującego podczas kompilowania instrukcji języka Transact-SQL dotyczącej tego planu.W przypadku zadań wsadowych ad hoc i przygotowanych wartość w tej kolumnie wynosi null. Nazwa bazy danych, dla którego mają zostać zaktualizowany stan dublowanie. |
objectid |
int |
Identyfikator obiektu (np. procedury składowanej lub funkcji utworzonej przez użytkownika) tego planu wykonywania zapytań.W przypadku zadań wsadowych ad hoc i przygotowanych wartość w tej kolumnie wynosi null. Nazwa bazy danych, dla którego mają zostać zaktualizowany stan dublowanie. |
numer |
smallint |
Liczba całkowita będąca numerem procedury składowanej.Na przykład grupa procedur dotyczących aplikacji zamówienia może używać numeracji proczam;1, proczam;2 itd.W przypadku zadań wsadowych ad hoc i przygotowanych wartość w tej kolumnie 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 = nieszyfrowana 1 = szyfrowana Kolumna nie jest pustych. |
query_plan |
nvarchar(max) |
Zawiera reprezentację planu wykonywania zapytań określonego parametrem plan_handle z chwili, gdy skomplikowano plan wykonania.Plan wykonania ma format tekstowy.Dla każdego zadania wsadowego jest generowany osobny plan zawierający np. instrukcje ad hoc języka Transact-SQL, wywołania procedur składowanych i wywołania procedur utworzonych 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 Plan zwrócone w tabela kolumnasys.dm_exec_text_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_text_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 dla tych instrukcji przy użyciu sys.dm_exec_text_query_plan ponieważ one nie istnieją 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_text_query_plan dla partia lub procedura przechowywana.Zamiast tego które należy wykonać oddzielne wywołanie sys.dm_exec_text_query_plan for the plan_handle która odnosi się do 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_text_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.
Uprawnienia
Do wykonać sys.dm_exec_text_query_plan, użytkownik musi należeć do sysadmin stałych roli serwera lub mieć uprawnienia VIEW SERVER STATE na serwerze.
Przykłady
A.Jeśli zabezpieczany jest widok wszystkich środków DELETE, INSERT, materiały referencyjne, SELECT i UPDATE.
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. Zamiast tego należy odwołać określone uprawnienia.
Uwaga
Aby uruchomić ten przykład, Zastąp wartości dla session_id i plan_handle o wartościach specyficznych dla serwera.
Najpierw należy pobrać identyfikator procesu serwera (SPID) wykonującego zapytanie lub zadanie wsadowe. Służy do tego procedura składowana sp_who:
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
Zawartość tabeli zwracanej przez procedurę składowaną sys.dm_exec_requests wskazuje, że dojściem do planu wolno wykonywanego zapytania lub zadania wsadowego jest 0x06000100A27E7C1FA821B10600.W przykładzie poniżej następuje zwrócenie informacji o planie wykonywania zapytań dla wskazanego dojścia do planu. Z kolei domyślne wartości 0 i -1 powodują zwrócenie listy wszystkich instrukcji zawartych w zapytaniu lub zadaniu wsadowym.
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_text_query_plan w następujący sposób. plan wykonania, 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.
C.Pobieranie z pamięci podręcznej planów wszystkich planów wykonywania zapytań, dla których serwer zebrał statystyki o wykonywaniu zapytań
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_text_query_plan w następujący sposób. plan wykonania, wyjściowy dla każdego planu jest w query_plan Kolumna tabela, która zostanie zwrócona.
D.Pobieranie informacji o 5 największych zapytaniach wg średniego czasu użycia procesora
Instrukcja REVOKE można użyć do usunięcia przyznawanych uprawnień, a instrukcja DENY może służyć do zapobiegać uzyskaniu wyraźnej zgody przez dotacji obiektem.The sys.dm_exec_text_query_plan funkcja specifies the default values 0 and -1 to return all statements in the partia in the query plan.
See Also
.gif)