Udostępnij za pośrednictwem


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.

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

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