Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2016 (13.x) och senare
Azure SQL Database
Azure SQL Managed Instance
Gör det möjligt att tvinga fram en viss plan för en viss fråga i Query Store.
När en plan tvingas för en viss fråga, varje gång SQL Server stöter på frågan, försöker den framtvinga planen i Frågeoptimeraren. Om planen tvingar misslyckas utlöses en utökad händelse och frågeoptimeraren instrueras att optimera på det normala sättet.
Transact-SQL syntaxkonventioner
Syntax
sp_query_store_force_plan
[ @query_id = ] query_id ,
[ @plan_id = ] plan_id ,
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing ,
[ @force_plan_scope = ] 'replica_group_id'
[ ; ]
Argument
Viktig
Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.
[ @query_id = ] query_id
ID:t för frågan. @query_id är bigint, utan standard.
[ @plan_id = ] plan_id
ID:t för den frågeplan som ska tvingas. @plan_id är bigint, utan standard.
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
Anger om optimerad plan framtvingning ska inaktiveras.
@disable_optimized_plan_forcing är bit med standardvärdet 0
.
[ @force_plan_scope = ] "replica_group_id"
Du kan framtvinga planer på en sekundär replik när Query Store för sekundära repliker är aktiverat. Kör sp_query_store_force_plan
och sp_query_store_unforce_plan
på den primära repliken. Med argumentet @force_plan_scope används som standard den lokala replik där kommandot körs, men du kan ange en replica_group_id som refererar till sys.query_store_plan_forcing_locations systemkatalogvyn.
Returnera kodvärden
0
(lyckades) eller 1
(fel).
Anmärkningar
Den resulterande körningsplanen som framtvingas av den här funktionen är densamma eller liknar den plan som tvingas fram. Eftersom den resulterande planen kanske inte är identisk med den plan som anges av sys.sp_query_store_force_plan
kan planernas prestanda variera. I sällsynta fall kan prestandaskillnaden vara betydande och negativ. I så fall måste administratören ta bort den framtvingade planen.
Granska framtvingade planer på sekundära repliker med sys.query_store_plan_forcing_locations.
Behörigheter
Kräver ALTER-behörigheten för databasen.
Exempel
I följande exempel returneras information om frågorna i Query Store.
SELECT txt.query_text_id,
txt.query_sql_text,
pl.plan_id,
qry.*
FROM sys.query_store_plan AS pl
INNER JOIN sys.query_store_query AS qry
ON pl.query_id = qry.query_id
INNER JOIN sys.query_store_query_text AS txt
ON qry.query_text_id = txt.query_text_id;
När du har identifierat query_id och plan_id som du vill framtvinga använder du följande exempel för att tvinga frågan att använda en plan.
EXEC sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
Använd sys.query_store_plan_forcing_locations, ansluten till sys.query_store_replicasför att hämta Query Store för sekundära repliker.
SELECT query_plan
FROM sys.query_store_plan AS qsp
INNER JOIN sys.query_store_plan_forcing_locations AS pfl
ON pfl.query_id = qsp.query_id
INNER JOIN sys.query_store_replicas AS qsr
ON qsr.replica_group_id = qsp.replica_group_id
WHERE qsr.replica_name = 'yourSecondaryReplicaName';
Relaterat innehåll
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sys.query_store_replicas (Transact-SQL)
- sp_query_store_remove_plan (Transact-SQL)
- sp_query_store_remove_query (Transact-SQL)
- sp_query_store_unforce_plan (Transact-SQL)
- katalogvyer för Query Store (Transact-SQL)
- Övervaka prestanda med hjälp av Query Store-
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- bästa praxis med Query Store-