Aracılığıyla paylaş


sp_control_plan_guide uygulanır (Transact-sql)

Damla, etkinleştirir veya plan Kılavuzu devre dışı bırakır.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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_namenull varsayılan.

  • BIRAK
    Plan Kılavuzu tarafından belirtilen damla plan_guide_name. Bir plan Kılavuzu kesilmeden sonra gelecekteki yürütmeler eskiden plan Kılavuzu tarafından eşleşen sorgu plan Kılavuzu tarafından etkilenmiştir değil.

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

  • DISABLE
    Belirtilen plan Kılavuzu devre dışı bırakır plan_guide_name. Bir plan Kılavuzu devre dışı bırakıldıktan sonra gelecekteki yürütmeler eskiden plan Kılavuzu tarafından eşleşen sorgu plan Kılavuzu tarafından etkilenmiştir 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 SAKATLAR tüm belirtilen belirtilemez.

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

  • TÜM ETKİNLEŞTİRME
    Geçerli veritabanındaki tüm planı kılavuzları sağlar. **N'plan_guide_name'**ne zaman tümünü etkinleştir belirtilen belirtilemez.

Açıklamalar

Bırakın veya bir işlev, saklı yordam veya bir plan Kılavuzu tarafından başvurulan dml tetikleyici değiştirmek çalışıyorum, etkin veya devre dışı, neden bir hata.

Engelli plan Kılavuzu devre dışı bırakma veya etkinleştirme etkin plan Kılavuzu hiçbir etkisi yoktur ve hatasız çalışır.

Planları kılavuzları her sürümünde kullanılamaz Microsoft SQL Server. Sürümü tarafından desteklenen özellikleri listesi için SQL Serverbakın SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler. Ancak yürütebilirsiniz sp_control_plan_guide uygulanır herhangi bir baskı drop veya drop all seçeneğiyle SQL Server.

İzinler

Yürütülecek sp_control_plan_guide uygulanır object türündeki bir plan Kılavuzu üzerinde (belirterek oluşturulan @ türü ='NESNESİNİN' ) plan Kılavuzu tarafı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ılavuzu bırakma

Aşağıdaki örnek bir plan Kılavuzu oluşturur, bunu devre dışı bırakır, etkinleştirir ve bu düşüyor.

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

--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 örnekte tüm planı kılavuzları devre dışı AdventureWorks2012 veritabanı.

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

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

Ayrıca bkz.

Başvuru

Veritabanı Altyapısı depolanan yordamlar (Transact-sql)

Sistem saklı yordamları (Transact-sql)

sp_create_plan_guide (Transact-sql)

sys.plan_guides (Transact-sql)

Kavramlar

Plan kılavuzları