Aracılığıyla paylaş


sp_control_plan_guide (Transact-SQL)

Düşünceye, etkinleştirir veya plan kılavuzudevre dışı bırakır.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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'
    Etkin veya devre dışı bırakılıyor plan kılavuzu belirtir.plan_guide_namegeçerli veritabanına çözümlenir.Belirtilmezse, plan_guide_name varsayılan değeri null.

  • BIRAK
    Belirtilen plan kılavuzu düşünceye plan_guide_name.plan kılavuzu kesilmeden sonra eskiden plan kılavuzu eşleşen sorgu gelecekteki yürütmeler plan kılavuzuetkilediği değil.

  • TÜMÜNÜ BIRAK
    Geçerli veritabanındaki tüm planı kılavuzları bırakır.**N'**plan_guide_name ne zaman bırak tüm belirtilen belirtilemez.

  • DEVRE DIŞI BIRAKMA
    Belirtilen plan kılavuzu devre dışı bırakır plan_guide_name.plan kılavuzu devre dışı bırakıldıktan sonra eskiden plan kılavuzu eşleşen sorgu gelecekteki yürütmeler plan kılavuzuetkilediği değil.

  • TÜMÜNÜ DEVRE DIŞI BIRAK
    Geçerli veritabanındaki tüm planı kılavuzları devre dışı bırakır.**N'**plan_guide_name ne zaman tümünü devre dışı bırak belirtilen belirtilemez.

  • ETKİNLEŞTİRME
    Belirtilen plan kılavuzu sağlar plan_guide_name.Etkinleştirildikten sonra bu plan kılavuzu uygun bir sorgu ile eşleştirilir.Varsayılan olarak, oluşturuldukları saat planı kılavuzları etkinleştirilir.

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

Açıklamalar

Bırakın veya bir işlev, saklı yordamveya etkin veya devre dışı, bir plan kılavuzutarafından başvurulan DML tetikleyici değiştirmek çalışılırken bir hata neden olur.

Etkin bir plan kılavuzu etkinleştirme veya devre dışı plan kılavuzu devre dışı bırakmanın etkisi ve hatasız çalışır.

yürütmekiçinsp_control_plan_guide biri drop veya drop tüm seçeneğiyle SQL Server; Ancak, tüm diğer seçenekleri yalnızca standart ve Enterprise sürümlerinde kullanılabilir.

İzinler

yürütmeksp_control_plan_guide object türündeki plan kılavuzu üzerinde (belirterek oluşturulan @ türü = 'nesne' ) plan kılavuzutarafından başvurulan nesne üzerinde alter izni gerektirir. Diğer tüm planı kılavuzları alter veritabanı izni gerektirir.

Örnekler

A.Etkinleştirme, devre dışı bırakma ve plan kılavuzubırakma

Aşağıdaki örnek oluşturur plan kılavuzudevre dışı bırakan 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ı devre dışı bırakma

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

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