Aracılığıyla paylaş


sp_control_plan_guide (Transact-SQL)

Keser, etkinleştirir veya bir plan kılavuzu devre dışı bırakır.

Topic link iconTransact-SQL sözdizimi kuralları

sp_control_plan_guide [ @operation = ] N'<control_option>'
  [ , [ @name = ] N'plan_guide_name' ]

<control_option>::=
{ 
    DROP 
  | DROP ALL
  | DISABLE
  | DISABLE ALL
  | ENABLE 
  | ENABLE ALL
}

Bağımsız değişkenler

  • n 'plan_guide_name'
    Specifies the plan guide that is being dropped, enabled, or disabled.plan_guide_name is resolved to the current database.Belirtilmezse, plan_guide_name Varsayılan değeri NULL.

  • BIRAKMA
    Belirtilen plan kılavuzu keser. plan_guide_name. Gelecekteki yürütmeler önceden plan Kılavuzu ile eşleşen bir sorgu planı kılavuz etkilediği bir plan kılavuzu kesilmeden sonra değil.

  • TÜMÜNÜ BIRAK
    Tüm planı kılavuzları geçerli veritabanında bırakır.**n '**plan_guide_name DROP ALL belirtilirse tarif edilemez.

  • Disable
    Belirtilen plan kılavuzu devre dışı bırakır. plan_guide_name. Gelecekteki yürütmeler önceden plan Kılavuzu ile eşleşen bir sorgu planı kılavuz etkilediği bir plan kılavuzu devre dışı bırakıldıktan sonra değil.

  • TÜM DEVRE DIŞI BIRAKMA
    Geçerli veritabanındaki tüm planı kılavuzları devre dışı bırakır.**n '**plan_guide_name DISABLE ALL belirtilirse tarif edilemez.

  • ETKİNLEŞTİRME
    Belirtilen plan kılavuzu sağlar. plan_guide_name. Etkinleştirildikten sonra BIR plan kılavuzu uygun bir sorguyla eşleşen.Varsayılan olarak, oluşturuldukları sırada planı kılavuzları etkinleştirilir.

  • TÜMÜNÜ ETKİNLEŞTİR
    Geçerli veritabanındaki tüm planı Kılavuzları'nı etkinleştirir.**n 'plan_guide_name' ENABLE ALL belirtilirse,**belirtilemez.

Remarks

Bırakın veya bir işlev, saklı yordam veya bir plan Kılavuzu tarafından başvurulmaktadır DML tetikleyicisi değiştirme denemesi, etkin veya devre dışı bir hatasına neden oluyor.

Bir etkin plan kılavuzu etkinleştirme ya da devre dışı bırakılmış bir plan kılavuzu devre dışı bırakılması hiçbir etkisi yoktur ve hatasız çalışır.

Istediğiniz çalıştırabilirsiniz sp_control_plan_guide herhangi bir sürümünü DROP ya da ALL DROP seçeneğiyleSQL Server; Bununla birlikte, diğer tüm seçenekler yalnızca standart ve Enterprise sürümleri kullanılabilir.

İzinler

To execute sp_control_plan_guide on a plan guide of type OBJECT (created specifying @type ='OBJECT' ) requires ALTER permission on the object that is referenced by the plan guide.Tüm diğer planı kılavuzları, ALTER DATABASE izni gerektirir.

Örnekler

C.Etkinleştirme, devre dışı bırakma ve bir plan kılavuzu siliniyor

Aşağıdaki örnek planı kılavuz oluşturur bunu devre dışı bırakır, etkinleştirir ve onu düşünceye.

--Create a procedure on which to define the plan guide.
IF OBJECT_ID(N'Sales.GetSalesOrderByCountry', N'P') IS NOT NULL
    DROP PROCEDURE Sales.GetSalesOrderByCountry;
GO
CREATE PROCEDURE Sales.GetSalesOrderByCountry 
    (@Country nvarchar(60))
AS
BEGIN
    SELECT *
    FROM Sales.SalesOrderHeader AS h 
    INNER JOIN Sales.Customer AS c ON h.CustomerID = c.CustomerID
    INNER JOIN Sales.SalesTerritory AS t ON c.TerritoryID = t.TerritoryID
    WHERE t.CountryRegionCode = @Country;
END
GO
--Create the plan guide.
EXEC sp_create_plan_guide N'Guide3',
    N'SELECT *
    FROM Sales.SalesOrderHeader AS h 
    INNER JOIN Sales.Customer AS c ON h.CustomerID = c.CustomerID
    INNER JOIN Sales.SalesTerritory AS t ON c.TerritoryID = t.TerritoryID
    WHERE t.CountryRegionCode = @Country',
    N'OBJECT',
    N'Sales.GetSalesOrderByCountry',
    NULL,
    N'OPTION (OPTIMIZE FOR (@Country = N''US''))';
GO
--Disable the plan guide.
EXEC sp_control_plan_guide N'DISABLE', N'Guide3';
GO
--Enable the plan guide.
EXEC sp_control_plan_guide N'ENABLE', N'Guide3';
GO
--Drop the plan guide.
EXEC sp_control_plan_guide N'DROP', N'Guide3';

b.Geçerli veritabanındaki tüm planı Kılavuzları'nı devre dışı bırakma

Aşağıdaki örnek, tüm planı kılavuzları devre dışı bırakır AdventureWorks Veritabanı.

USE AdventureWorks;
GO
EXEC sp_control_plan_guide N'DISABLE ALL';