Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Verifieert de geldigheid van de gespecificeerde plangids. De sys.fn_validate_plan_guide functie geeft het eerste foutbericht terug dat wordt aangetroffen wanneer de plangids op zijn query wordt toegepast. Een lege rijset wordt teruggegeven wanneer de plangids geldig is. Plangidsen kunnen ongeldig worden nadat er wijzigingen zijn aangebracht in het fysieke ontwerp van de database. Als bijvoorbeeld een plangids een bepaalde index specificeert en die index vervolgens wordt verwijderd, kan de zoekopdracht de plangids niet langer gebruiken.
Door een plangids te valideren, kun je bepalen of de gids zonder aanpassing door de optimizer gebruikt kan worden. Op basis van de resultaten van de functie kun je besluiten de plangids te verwijderen en de query opnieuw af te stemmen, of het databaseontwerp te wijzigen, bijvoorbeeld door de index die in de plangids is gespecificeerd opnieuw te maken.
Transact-SQL syntaxis-conventies
Syntax
sys.fn_validate_plan_guide ( plan_guide_id )
Arguments
plan_guide_id
Is de ID van de plangids zoals gerapporteerd in de catalogusweergave van de sys.plan_guides .
plan_guide_id is int zonder standaard.
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| msgnum | int | Id van het foutbericht. |
| ernstigheid | tinyint | Ernstniveau van het bericht, tussen 1 en 25. |
| state | smallint | Statusnummer van de fout geeft aan welk punt in de code de fout is opgetreden. |
| message | nvarchar(2048) | Berichttekst van de fout. |
Permissions
OBJECT-scoped plangidsen vereisen VIEW DEFINITION- of ALTER-toestemming voor het gerefereerde object en rechten om de query of batch die in de plangids wordt verstrekt samen te stellen. Als een batch bijvoorbeeld SELECT-instructies bevat, zijn SELECT-rechten vereist voor de gerefereerde objecten.
SQL- of TEMPLATE-scoped plangidsen vereisen ALTER-toestemming op de database en rechten om de query of batch die in de plangids wordt verstrekt te compileren. Als een batch bijvoorbeeld SELECT-instructies bevat, zijn SELECT-rechten vereist voor de gerefereerde objecten.
Remarks
De sys.fn_validate_plan_guide functie is niet beschikbaar in Azure SQL Database.
Examples
A. Het valideren van alle plangidsen in een database
Het volgende voorbeeld controleert de geldigheid van alle plangidsen in de huidige database. Als een lege resultaatset wordt teruggegeven, zijn alle plangidsen geldig.
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. Testplan-gids validatie voordat een wijziging in de database wordt geïmplementeerd
Het volgende voorbeeld gebruikt een expliciete transactie om een index te verwijderen. De sys.fn_validate_plan_guide functie wordt uitgevoerd om te bepalen of deze actie plangidsen in de database ongeldig maakt. Op basis van de resultaten van de functie wordt de DROP INDEX instructie ofwel gecommitteerd of wordt de transactie teruggedraaid, en wordt de index niet verwijderd.
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
Zie ook
Planhandleidingen
sp_create_plan_guide (Transact-SQL)
sp_create_plan_guide_from_handle (Transact-SQL)