Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL ServerAzure
SQL Managed Instance
Ověřuje platnost uvedeného plánu. Funkce sys.fn_validate_plan_guide vrací první chybovou zprávu, která se objeví, když je plánovací průvodce aplikován na její dotaz. Prázdná sada řádků se vrátí, když je plánový průvodce platný. Plánové průvodce mohou být neplatné po změnách fyzického návrhu databáze. Například pokud plánovací průvodce specifikuje konkrétní index a tento index je následně vyřazen, dotaz již nebude moci plánovací průvodce používat.
Ověřením plánového průvodce můžete určit, zda může optimalizátor průvodce použít bez úprav. Na základě výsledků funkce se můžete rozhodnout plán guide opustit a dotaz znovu upravit nebo upravit návrh databáze, například znovuvytvořením indexu uvedeného v plánovém průvodci.
Syntax
sys.fn_validate_plan_guide ( plan_guide_id )
Arguments
plan_guide_id
Je ID plánového průvodce, jak je uvedeno v sys.plan_guides katalogu.
plan_guide_id je int bez výchozího nastavení.
Vrácená tabulka
| Název sloupce | Datový typ | Description |
|---|---|---|
| msgnum | int | ID chybové zprávy. |
| severity | tinyint | Závažnost zprávy mezi 1 a 25. |
| stav | smallint | Číslo stavu chyby označující bod v kódu, kde chyba nastala. |
| zpráva | nvarchar(2048) | Zpráva o chybě. |
Permissions
OBJECT-scoped plánovací průvodce vyžadují VIEW DEFINITION nebo ALTER oprávnění na odkazovaný objekt a oprávnění pro kompilaci dotazu nebo dávkového souboru, který je uveden v plánovém průvodci. Například pokud dávka obsahuje příkazy SELECT, jsou vyžadována oprávnění SELECT na odkazovaných objektech.
SQL nebo šablonové plánovací průvodce vyžadují ALTER povolení k databázi a oprávnění pro kompilaci dotazu nebo dávkového souboru uvedeného v plánu. Například pokud dávka obsahuje příkazy SELECT, jsou vyžadována oprávnění SELECT na odkazovaných objektech.
Remarks
Tato sys.fn_validate_plan_guide funkce není dostupná v Azure SQL Database.
Examples
A. Ověření všech plánovacích přírutek v databázi
Následující příklad ověřuje platnost všech plánovacích příruček v aktuální databázi. Pokud je vrácena prázdná množina výsledků, všechny plánové vodítka jsou platné.
USE AdventureWorks2022;
GO
SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY fn_validate_plan_guide(plan_guide_id);
GO
B. Validace plánu testování před implementací změny v databázi
Následující příklad používá explicitní transakci k vyřazení indexu. Funkce sys.fn_validate_plan_guide se vykoná, aby zjistila, zda tato akce zneplatní jakékoli plánovací průvodce v databázi. Na základě výsledků funkce DROP INDEX je příkaz buď potvrzen, nebo je transakce vrácena zpět a index není vyřazen.
USE AdventureWorks2022;
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