sys.dm_exec_plan_attributes (języka Transact-SQL)

Zwraca jeden wiersz na plan atrybut dla planu, określonego przez dojście do planu.W tej tabelamożna użyć-wycenione funkcja , aby uzyskać szczegółowe informacje dotyczące konkretnego planu, takich jak pamięć podręczna wartości klucz lub numer bieżącej równoczesnego wykonania planu.

Ostrzeżenie

Niektóre informacje zwrócone za pomocą tej funkcja jest mapowany na sys.syscacheobjects widoku zgodności z poprzednimi wersjami.

Składnia

sys.dm_exec_plan_attributes ( plan_handle )

Argumenty

  • plan_handle
    Jednoznacznie identyfikuje plan kwerend dla partia , została wykonana i którego plan znajduje się w pamięci podręcznej planu.plan_handleis varbinary(64).Uchwyt plan może być otrzymana z sys.dm_exec_cached_plans dynamiczny widok zarządzania.

Zwracana tabela

Nazwa kolumny

Typ danych

Opis

atrybut

varchar(128)

Nazwa atrybut skojarzonego z tym planem.Jedną z następujących czynności:

AttributeTyp danychOpis
set_options int Wskazuje wartości opcji, które plan był przestrzegany.
Identyfikator obiektu int Jeden z głównych kluczy używanych do wyszukiwania obiektu w pamięci podręcznej.Jest to obiekt identyfikator przechowywany w sys.objects dla obiektów bazy danych (procedury, widoki, wyzwalaczami i tak dalej).Dla planów typu "Ad hoc" lub "Prepared" jest wewnętrzny mieszania tekstu partia .
Identyfikator DBID int Jest identyfikator bazę danych zawierającą obiekt plan dotyczy.Ad hoc lub przygotowane plany jest identyfikator bazy danych, z której jest wykonywany partia .
dbid_execute int Dla obiektów systemu przechowywane w zasobów bazy danych, identyfikator bazy danych, z której jest wykonywany buforowanego planu.We wszystkich innych przypadkach jest 0.
user_id int Wartość -2 wskazuje, że partia przedłożone nie zależą od rozpoznawania nazw niejawna i mogą być współużytkowane przez różnych użytkowników.Jest to preferowana metoda.Każda wartość reprezentuje identyfikator użytkownika przesyłania kwerend w bazie danych.
identyfikator_języka smallint Identyfikator języka połączenia, która utworzyła obiekt pamięci podręcznej.Aby uzyskać więcej informacji, zobacz sys.syslanguages (Transact-SQL).
date_format smallint Format daty połączenia, która utworzyła obiekt pamięci podręcznej.Aby uzyskać więcej informacji, zobacz Ustaw format daty (Transact-SQL).
date_first tinyint Pierwsza wartość daty.Aby uzyskać więcej informacji, zobacz SET DATEFIRST (Transact-SQL).
Stan int Bity stanu wewnętrznego należące do przeszukiwania pamięci podręcznej klucz.
required_cursor_options int Opcje kursora określone przez użytkownika, takie jak typ kursor .
acceptable_cursor_options int Kursor opcji SQL Server mogą niejawnie przekonwertować do do obsługi wykonanie instrukcja.Na przykład użytkownik może określić dynamiczne kursor, ale optymalizator kwerendy jest dozwolona Konwersja tego typu kursor na statyczne kursor.Aby uzyskać więcej informacji, zobacz Za pomocą konwersje niejawne kursora.
inuse_exec_context int Liczba aktualnie wykonywanych partii, które korzystają z planu kwerend.Aby uzyskać więcej informacji o wykonanie planów kwerend i kontekstu, zobacz Wykonanie planu buforowania i ponownego użycia.
free_exec_context int Liczba kontekstów buforowanych wykonanie planu kwerend, które nie są aktualnie używane.
hits_exec_context int Ile razy kontekst wykonania zostało uzyskane z pamięci podręcznej plan i ponownie zapisywanie narzutów ponownej kompilacjiinstrukcja SQL. Wartość wartość zagregowana dla wykonania partia wszystkie pory.
misses_exec_context int Ile razy kontekst wykonania nie można odnaleźć w pamięci podręcznej plan spowodowało utworzenie nowego kontekstu wykonanie do wykonania partia .
removed_exec_context int Liczba kontekstów wykonanie, które zostały usunięte z powodu presji pamięci na buforowanego planu.
inuse_cursors int Liczba aktualnie wykonywanych partie zawierające jeden lub więcej kursory, korzystających z buforowanego planu.
free_cursors int Liczba kursorów bezczynności lub bezpłatne dla buforowanego planu.
hits_cursors int Ile razy nieaktywny kursor został uzyskany z buforowanego planu i ponownie.Wartość wartość zagregowana dla wykonania partia wszystkie pory.
misses_cursors int Liczba przypadków, których nie można odnaleźć nieaktywny kursor w pamięci podręcznej.
removed_cursors int Liczbę kursorów, które zostały usunięte z powodu presji pamięci na buforowanego planu.
sql_handle varbinary (64)Uchwyt SQL dla partia.
merge_action_type smallint Typ wyzwalacza planu wykonania używanego w wyniku scalania instrukcja. wartość 0 wskazuje plan — do wyzwalacza, planu wyzwalacz, który jest wykonać w wyniku scalania instrukcjalub planu wyzwalacz, który jest wykonywany w wyniku scalania instrukcja , która określa jedynie usunięcie akcja.wartość 1 wskazuje planu wyzwalacz INSERT, który działa jako wynik scalania instrukcja.2 oznacza plan wyzwalacza aktualizacji, który działa jako wynik scalania instrukcja.3 oznacza Usuń plan wyzwalacza, działającą w wyniku scalania instrukcja zawierającą odpowiednich INSERT lub UPDATE akcja.Uruchom akcje kaskadowych zagnieżdżonych wyzwalaczy ta wartość jest akcja korespondencji seryjnej instrukcja , która spowodowała kaskadowo.

wartość

sql_variant

Wartość atrybut , który jest skojarzony z tym planem.

is_cache_key

bit

Wskazuje, czy atrybut jest używany jako część pamięci podręcznej wyszukiwania klucz dla planu.

Uprawnienia

Wymaga uprawnienia Wyświetlanie stanu serwera na serwerze.

Uwagi

Ustawianie opcji

Kopie tych samych skompilowany plan mogą różnić się jedynie przez wartość w set_options kolumna.Oznacza to, że różne połączenia z różnych zestawów Ustaw opcje dla tej samej kwerendy.Za pomocą różnych zestawów opcji jest zwykle niepożądana, ponieważ mogą powodować dodatkowe kompilacje mniej ponownego użycia planu i plan inflacji pamięci podręcznej z powodu wielu kopii planów w pamięci podręcznej.Aby uzyskać więcej informacji, zobacz Dostrajanie zalecenia kwerendy.

Ustawianie opcji oceny

Tłumaczenie wartości zwracane w set_options do opcji, z którymi został skompilowany plan, odejmować wartości z set_options wartości, zaczynając od największej możliwej wartości, dopóki nie osiągniesz 0.Każda wartość, odejmować odpowiadający opcji, które zostało użyte do planu kwerend.Na przykład jeśli wartość w set_options jest 251, dostępne są opcje plan został skompilowany z ANSI_NULL_DFLT_ON (128), QUOTED_IDENTIFIER (64), ANSI_NULLS(32), ANSI_WARNINGS (16), CONCAT_NULL_YIELDS_NULL (8), Plan(2) równoległych i spowodowałyby (1).

Opcja

Wartość

SPOWODOWAŁYBY

1

Plan równoległe

2

FORCEPLAN

4

CONCAT_NULL_YIELDS_NULL

8

ANSI_WARNINGS

16

KLAUZULE ANSI_NULLS

32

QUOTED_IDENTIFIER

64

ANSI_NULL_DFLT_ON

128

ANSI_NULL_DFLT_OFF

256

NoBrowseTable

Wskazuje, że plan nie korzystać pracy tabela do wykonania operacji do PRZEGLĄDANIA.

512

TriggerOneRow

Wskazuje, czy plan zawiera optymalizację pojedynczy wiersz dla po tabel delta wyzwalacza.

1024

ResyncQuery

Wskazuje, że kwerenda została przedłożona przez procedury składowane w systemiewewnętrznych.

2048

ARITH_ABORT

4096

NUMERIC_ROUNDABORT

8192

DATEFIRST

16384

FORMAT DATY

32768

LanguageID

65536

PO

Oznacza, że opcję bazy danych PARAMETRYZACJI była zestaw WYMUSZONY gdy plan został skompilowany.

131072

Kursory

Kursory nieaktywnych są buforowane w skompilowany plan tak, aby pamięci używaną do przechowywania kursor mogą być wielokrotnie używane przez użytkowników równocześnie kursory.Załóżmy na przykład, że partia deklaruje i korzysta z kursor bez cofanie przydziału go.Jeśli dwóch użytkowników wykonywanie tej samej partia, będzie się dwa kursory aktywne.Po kursory są dealokowane (potencjalnie w różnych partii), pamięci używaną do przechowywania kursor jest buforowany i nie jest zwalniane.Ta lista nieaktywnych kursorów jest przechowywana w skompilowany plan.Następnym czas użytkownik wykonuje partia, pamięci podręcznej kursor zostanie ponownie użyty i odpowiednio zainicjowany jako aktywny kursor.

Ocena opcje kursora

Tłumaczenie wartości zwracane w required_cursor_options i acceptable_cursor_options do opcji, z którymi został skompilowany plan, odejmować wartości od wartości kolumna , poczynając od największej możliwej wartości, dopóki nie osiągniesz 0.Każda wartość, którą odejmować odpowiada opcja kursor , które zostało użyte do planu kwerend.

Opcja

Wartość

Brak

0

WIELKOŚĆ LITER

1

PRZEWIJANIA

2

TYLKO DO ODCZYTU

4

DLA AKTUALIZACJI

8

LOKALNE

16

GLOBALNE

32

FORWARD_ONLY

64

ZESTAW KLUCZY

128

DYNAMICZNE

256

SCROLL_LOCKS

512

PRZYPADEK OPTYMISTYCZNY

1024

STATYCZNE

2048

FAST_FORWARD

4096

W MIEJSCU

8192

DLAselect_statement

16384

Przykłady

A.Zwracania atrybutów dla określonego planu

Poniższy przykład zwraca wszystkie atrybuty plan dla określonego planu.sys.dm_exec_cached_plansdynamiczny widok zarządzania jest poszukiwana najpierw do uzyskania dojścia plan dla określonego planu. Zastąp w drugą kwerendę <plan_handle> z planem obsługi wartości z pierwszej kwerendy.

SELECT plan_handle, refcounts, usecounts, size_in_bytes, cacheobjtype, objtype 
FROM sys.dm_exec_cached_plans;
GO
SELECT attribute, value, is_cache_key
FROM sys.dm_exec_plan_attributes(<plan_handle>);
GO

B.Zwracanie Ustaw opcje dla planów skompilowany i uchwyt SQL dla planów buforowane

Poniższy przykład zwraca wartość przedstawiającą opcje, które każdy plan był przestrzegany.Ponadto zwracane jest dojście do SQL dla pamięci podręcznej planów.

SELECT plan_handle, pvt.set_options, pvt.sql_handle
FROM (
    SELECT plan_handle, epa.attribute, epa.value 
    FROM sys.dm_exec_cached_plans 
        OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
    WHERE cacheobjtype = 'Compiled Plan') AS ecpa 
PIVOT (MAX(ecpa.value) FOR ecpa.attribute IN ("set_options", "sql_handle")) AS pvt;
GO