Megosztás a következőn keresztül:


sp_query_store_force_plan (Transact-SQL)

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Lehetővé teszi egy adott terv kényszerítését egy adott lekérdezéshez a Lekérdezéstárban.

Amikor egy terv egy adott lekérdezésre van kényszerítve, minden alkalommal, amikor az SQL Server találkozik a lekérdezéssel, megpróbálja kényszeríteni a tervet a Lekérdezésoptimalizálóban. Ha a terv kényszerítése sikertelen, a rendszer aktivál egy kiterjesztett eseményt, és a lekérdezésoptimalizálót arra utasítja, hogy a szokásos módon optimalizáljon.

Transact-SQL szintaxis konvenciói

Szintaxis

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'
[ ; ]

Érvek

Fontos

A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.

[ @query_id = ] query_id

A lekérdezés azonosítója. @query_id, alapértelmezés nélkül.

[ @plan_id = ] plan_id

A kényszerítendő lekérdezésterv azonosítója. @plan_idbigint, alapértelmezés nélkül.

[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing

Azt jelzi, hogy le kell-e tiltani az optimalizált terv kényszerítését. @disable_optimized_plan_forcingbit alapértelmezett 0.

[ @replica_group_id = ] 'replica_group_id'

Ha engedélyezve van az olvasható másodpéldányok lekérdezéstára , kényszerítheti a másodlagos replikára vonatkozó terveket. Hajtsa végre sp_query_store_force_plan és sp_query_store_unforce_plan az elsődleges replikán. A @replica_group_id argumentum alapértelmezés szerint arra a helyi replikára vonatkozik, ahol a parancs végrehajtása folyamatban van, de megadhat egy replica_group_id hivatkozva a sys.query_store_plan_forcing_locations rendszerkatalógus nézetére.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Megjegyzések

A funkció által kényszerített végrehajtási terv megegyezik vagy hasonló a kényszerített tervhez. Mivel az eredményként kapott terv nem feltétlenül azonos a sys.sp_query_store_force_planáltal megadott tervvel, a tervek teljesítménye eltérő lehet. Ritkán a teljesítménybeli különbség jelentős és negatív lehet; ebben az esetben a rendszergazdának el kell távolítania a kényszerített tervet.

A másodlagos replikák kényszerített terveinek áttekintése a sys.query_store_plan_forcing_locations.

Engedélyek

ALTER Az adatbázis engedélyére van szükség.

Példák

Az alábbi példa a lekérdezéstárban lévő lekérdezésekkel kapcsolatos információkat adja vissza.

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;

Miután azonosította a kényszeríteni kívánt query_id és plan_id, az alábbi példával kényszerítheti a lekérdezést egy terv használatára.

EXECUTE sp_query_store_force_plan
    @query_id = 3,
    @plan_id = 3;

A sys.query_store_replicas csatlakoztatott sys.query_store_plan_forcing_locations használatával lekérheti a Lekérdezéstárat olvasható másodtárakhoz.

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';