sp_control_plan_guide uygulanır (Transact-sql)
Damla, etkinleştirir veya plan Kılavuzu devre dışı bırakır.
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)