fn_validate_plan_guide (języka Transact-SQL)
Sprawdza ważność określonego przewodnik planu.sys.fn_validate_plan_guide,funkcja zwraca pierwszy komunikat o błędzie napotkanych podczas przewodnik planu jest stosowany do kwerendy. przewodnik planu jest nieprawidłowy zwracany jest pusty zestaw wierszy .Plan guides może stać się nieprawidłowe po wprowadzeniu zmian fizycznych projektowania bazy danych.Na przykład jeśli przewodnik planu określony indeks i indeks ten jest następnie spadła, kwerendy będą już mogli przewodnik planu.
Sprawdzając poprawność przewodnik planu, można określić, czy przewodnik mogą być używane przez optymalizator bez modyfikacji.W oparciu o wyniki funkcjamoże zadecydować o przewodnik planu i Dostrojenie kwerendy lub zmodyfikować projekt bazy danych, na przykład przez ponowne indeksu określone w przewodnik planu.
Składnia
sys.fn_validate_plan_guide ( plan_guide_id )
Argumenty
- plan_guide_id
Jest identyfikator przewodnik planu w sys.plan_guides katalogu widoku.plan_guide_idjest intz nie domyślnych.
Zwracana tabela
Nazwa kolumny |
Typ danych |
Opis |
---|---|---|
msgnum |
int |
Identyfikator komunikatu o błędzie. |
severity |
tinyint |
poziom ważności wiadomości od 1 do 25. |
state |
smallint |
Podać numer błąd wskazujący punkt kodu, w którym wystąpił błąd. |
message |
nvarchar(2048) |
Tekst komunikatu o błędzie. |
Uprawnienia
Prowadnice obiektu o zakresie plan wymagają definicji WIDOKU lub ZMIEŃ uprawnienia dla obiektu odwołanie do kompilowania kwerendy lub partia znajduje się w przewodnik planu.Na przykład jeśli partia zawiera instrukcji SELECT, SELECT uprawnień do obiektów odwołanie są wymagane.
SQL- lub o zakresie szablon plan guides wymaga uprawnienia do kompilowania kwerendy lub partia znajduje się w przewodnik planui ZMIEŃ uprawnienia do bazy danych.Na przykład jeśli partia zawiera instrukcji SELECT, SELECT uprawnień do obiektów odwołanie są wymagane.
Przykłady
A.Sprawdzanie poprawności wszystkie prowadnice plan w bazie danych
W poniższym przykładzie sprawdzana poprawność wszystkich prowadnic planu w bieżącej bazie danych.Jeśli zwracany jest pusty zestaw wyników , wszystkie prowadnice planu są prawidłowe.
USE AdventureWorks2008R2;
GO
SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY fn_validate_plan_guide(plan_guide_id);
GO
B.Testowanie poprawności przewodnik planu przed wdrożeniem zmiany w bazie danych
W poniższym przykładzie użyto transakcja jawna , aby usunąć indeks.sys.fn_validate_plan_guidefunkcja jest wykonywana w celu określenia, czy ta akcja może unieważnić wszystkie linie pomocnicze plan w bazie danych. Na podstawie wyniki funkcja DROP INDEX instrukcja jest albo popełnione lub transakcja jest cofana i indeks nie jest przenoszony.
USE AdventureWorks2008R2;
GO
BEGIN TRANSACTION;
DROP INDEX IX_SalesOrderHeader_CustomerID ON Sales.SalesOrderHeader;
-- Check for invalid plan guides.
IF EXISTS (SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY sys.fn_validate_plan_guide(plan_guide_id))
ROLLBACK TRANSACTION;
ELSE
COMMIT TRANSACTION;
GO
Zobacz także