Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sistemde saklanan prosedür, sp_control_plan_guide bir plan rehberini düşürmek, etkinleştirmek veya devre dışı bırakmak için kullanılır.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_control_plan_guide
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
[ , [ @name = ] N'name' ]
[ ; ]
Arguments
[ @name = ] ‘name’
Bırakılan, etkinleştirilen veya devre dışı bırakılan plan rehberini belirtir.
@namesysname'dir, varsayılan olarak .NULL
@name mevcut veritabanına çözülür. Belirtilmediyse, @name varsayılan olarak .NULL
[ @operation = ] { N'DROP [ HEPSI ]' | N'DEVRE DıŞı BıRAK [ HEPSI ]' | N'ENABLE [ HEPSI ]' }
@name'de belirtilen plan rehberine göre gerçekleştirilecek işlem. @operationnvarchar(60)'dır ve varsayılan yoktur.
DROP@name tarafından belirtilen plan rehberini düşürür. Bir plan rehberi bırakıldıktan sonra, plan rehberiyle eşleştirilen bir sorgunun gelecekteki yürütmeleri plan rehberinden etkilenmez.
DROP ALLTüm plan rehberlerini mevcut veritabanına bırakıyor. @name ne
DROP ALLzaman belirtildiği belirtilemez.DISABLE@name tarafından belirtilen plan rehberini devre dışı bırakır. Bir plan rehberi devre dışı bırakıldıktan sonra, plan rehberiyle eşleştirilen bir sorgunun gelecekteki yürütülmeleri plan rehberinden etkilenmez.
DISABLE ALLMevcut veritabanındaki tüm plan rehberlerini devre dışı bırakıyor. @name ne
DISABLE ALLzaman belirtildiği belirtilemez.ENABLE@name tarafından belirtilen plan rehberini etkinleştirir. Bir plan rehberi, etkinleştirildikten sonra uygun bir sorgu ile eşleştirilebilir. Varsayılan olarak, plan rehberleri oluşturuldukları anda etkinleştirilir.
ENABLE ALLMevcut veritabanındaki tüm plan rehberlerini etkinleştiriyor. @name ne
ENABLE ALLzaman belirtildiği belirtilemez.
Açıklamalar
Plan rehberinde referans verilen bir fonksiyonu, depolanmış prosedürü veya DML tetikleyicisini kaldırmaya veya değiştirmeye çalışmak, etkinleştirilmiş veya devre dışı bırakılmış bir hata oluşturur.
Devre dışı bırakılmış bir plan rehberini devre dışı bırakmak veya etkinleştirilmiş bir plan rehberini etkinleştirmek hiçbir etkisi yaratmaz ve hatasız çalışır.
Plan rehberleri SQL Server'ın her sürümünde mevcut değil. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz. Sürümleri ve SQL Server 2022'nin desteklenen özellikleri. Ancak, herhangi bir SQL Server sürümünde veya DROP ALL seçeneğiyle çalıştırabilirsiniz.sp_control_plan_guideDROP
Permissions
Bir tür OBJECT plan rehberinde (belirlenen @type = '<object>'şekilde oluşturulan) bir plan rehberinde çalıştırmaksp_control_plan_guide, plan rehberinde referans verilen nesneye izin gerektirirALTER. Diğer tüm plan rehberleri için izin gereklidir ALTER DATABASE .
Örnekler
A. Plan rehberini etkinleştir, devre dışı bırak ve bırak
Aşağıdaki örnek bir plan rehberi oluşturur, onu devre dışı bırakır, etkinleştirir ve düşürür.
--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.
EXECUTE 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.
EXECUTE sp_control_plan_guide N'DISABLE',
N'Guide3';
GO
--Enable the plan guide.
EXECUTE sp_control_plan_guide N'ENABLE',
N'Guide3';
GO
--Drop the plan guide.
EXECUTE sp_control_plan_guide N'DROP',
N'Guide3';
GO
B. Mevcut veritabanındaki tüm plan rehberlerini devre dışı bırak
Aşağıdaki örnek, veritabanındaki AdventureWorks2025 tüm plan rehberlerini devre dışı bırakır.
USE AdventureWorks2022;
GO
EXECUTE sp_control_plan_guide N'DISABLE ALL';