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.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
ŞABLON plan kılavuzu, belirli bir forma göre parametrelenen bağımsız sorgularla eşleşir.
Aşağıdaki örnek, belirtilen bir forma parametreleştiren herhangi bir sorguyla eşleşen bir plan kılavuzu oluşturur ve SQL Server'ı sorgunun parametreleştirilmesini zorlamaya yönlendirir. Aşağıdaki iki sorgu, sözdizimsel olarak eşdeğerdir, ancak yalnızca sabit değerlerinde farklılık gösterir.
SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader AS h
INNER JOIN AdventureWorks2022.Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.SalesOrderID = 45639;
SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader AS h
INNER JOIN AdventureWorks2022.Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.SalesOrderID = 45640;
Sorgunun parametreli biçimiyle ilgili plan kılavuzu aşağıdadır:
EXEC sp_create_plan_guide
@name = N'TemplateGuide1',
@stmt = N'SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader AS h
INNER JOIN AdventureWorks2022.Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.SalesOrderID = @0',
@type = N'TEMPLATE',
@module_or_batch = NULL,
@params = N'@0 int',
@hints = N'OPTION(PARAMETERIZATION FORCED)';
Önceki örnekte, @stmt parametresinin değeri sorgunun parametreleştirilmiş biçimidir. Bu değeri, sp_create_plan_guide için kullanmak üzere almanın tek güvenilir yolu, sp_get_query_template sistem saklı yordamını kullanmaktır. Aşağıdaki betik, hem parametreli sorguyu almak hem de bunun üzerine bir plan kılavuzu oluşturmak için kullanılabilir.
DECLARE @stmt nvarchar(max);
DECLARE @params nvarchar(max);
EXEC sp_get_query_template
N'SELECT * FROM AdventureWorks2022.Sales.SalesOrderHeader AS h
INNER JOIN AdventureWorks2022.Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.SalesOrderID = 45639;',
@stmt OUTPUT,
@params OUTPUT
EXEC sp_create_plan_guide N'TemplateGuide1',
@stmt,
N'TEMPLATE',
NULL,
@params,
N'OPTION(PARAMETERIZATION FORCED)';
Önemli
@stmt'e geçirilen sp_get_query_template parametresindeki sabit değişmezlerin değeri, bu değişmezlerin yerine geçen parametre için seçilen veri türünü etkileyebilir. Bu, plan kılavuzu eşleştirmeyi etkiler. Farklı parametre değer aralıklarını işlemek için birden fazla plan kılavuzu oluşturmanız gerekebilir.
ŞABLON planı kılavuzlarını SQL planı kılavuzlarıyla birlikte de kullanabilirsiniz. Örneğin, bir sorgu sınıfının parametreli olduğundan emin olmak için ŞABLON planı kılavuzu oluşturabilirsiniz. Ardından, bu sorgunun parametreli biçiminde bir SQL planı kılavuzu oluşturabilirsiniz.