Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2016 (13.x) und spätere Versionen
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Ermöglicht das Erzwingen eines bestimmten Plans für eine bestimmte Abfrage im Abfragespeicher.
Wenn ein Plan für eine bestimmte Abfrage erzwungen wird, versucht SQL Server bei jedem Zugriff auf die Abfrage, den Plan im Abfrageoptimierer zu erzwingen. Wenn der Plan nicht erzwungen werden kann, wird ein erweitertes Ereignis ausgelöst, und der Abfrageoptimierer wird angewiesen, die Optimierung auf die übliche Weise durchzuführen.
Transact-SQL-Syntaxkonventionen
Syntax
sp_query_store_force_plan
[ @query_id = ] query_id ,
[ @plan_id = ] plan_id ,
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing ,
[ @replica_group_id = ] 'replica_group_id'
[ ; ]
Argumente
Wichtig
Argumente für erweiterte gespeicherte Prozeduren müssen in der spezifischen Reihenfolge eingegeben werden, wie im Abschnitt Syntax beschrieben. Wenn die Parameter außerhalb der Reihenfolge eingegeben werden, tritt eine Fehlermeldung auf.
[ @query_id = ] query_id
Die ID der Abfrage. @query_id ist großint, ohne Standard.
[ @plan_id = ] plan_id
Die ID des Abfrageplans, der erzwungen werden soll. @plan_id ist großint, ohne Standard.
[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing
Gibt an, ob das Erzwingen eines optimierten Plans deaktiviert werden soll.
@disable_optimized_plan_forcing ist bit mit einem Standardwert von 0.
[ @replica_group_id = ] 'replica_group_id'
Sie können Pläne für ein sekundäres Replikat erzwingen, wenn der Abfragespeicher für lesbare Secondärdateien aktiviert ist. Führen Sie sp_query_store_force_plan und sp_query_store_unforce_plan für das primäre Replikat aus. Wenn Sie das argument @replica_group_id verwenden, wird standardmäßig das lokale Replikat verwendet, in dem der Befehl ausgeführt wird. Sie können jedoch eine replica_group_id angeben, die auf die sys.query_store_plan_forcing_locations Systemkatalogansicht verweist.
Rückgabecodewerte
0 (erfolgreich) oder 1 Fehler.
Hinweise
Der resultierende Ausführungsplan, der von diesem Feature erzwungen wird, ist identisch oder ähnlich wie der Plan, der erzwungen wird. Da der resultierende Plan möglicherweise nicht mit dem durch sys.sp_query_store_force_planden angegebenen Plan identisch ist, kann die Leistung der Pläne variieren. In seltenen Fällen kann der Leistungsunterschied signifikant und negativ sein; in diesem Fall muss der Administrator den erzwungenen Plan entfernen.
Überprüfen Sie erzwungene Pläne für sekundäre Replikate mit sys.query_store_plan_forcing_locations.
Berechtigungen
Erfordert die ALTER Berechtigung für die Datenbank.
Beispiele
Im folgenden Beispiel werden Informationen zu den Abfragen im Abfragespeicher zurückgegeben.
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;
Nachdem Sie die query_id und plan_id identifiziert haben, die Sie erzwingen möchten, verwenden Sie das folgende Beispiel, um die Abfrage zur Verwendung eines Plans zu erzwingen.
EXECUTE sp_query_store_force_plan
@query_id = 3,
@plan_id = 3;
Verwenden Sie sys.query_store_plan_forcing_locations, die mit sys.query_store_replicas verknüpft sind, um den Abfragespeicher für lesbare Secondärdateien abzurufen.
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';
Zugehöriger Inhalt
- 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)
- Katalogsichten des Abfragespeichers (Transact-SQL)
- Überwachen der Leistung mithilfe des Abfragespeichers
- sp_query_store_reset_exec_stats (Transact-SQL)
- sp_query_store_flush_db (Transact-SQL)
- Bewährte Methoden für den Abfragespeicher