Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL példány
A sablonterv útmutatója olyan önálló lekérdezésekkel egyezik meg, amelyek egy adott formátumra paraméterezhetők.
Az alábbi példa létrehoz egy tervútmutatót, amely megfelel a megadott űrlapra paraméterezendő lekérdezéseknek, és az SQL Servert a lekérdezés paraméterezésének kényszerítésére utasítja. A következő két lekérdezés szintaktikailag egyenértékű, de csak az állandó literális értékekben különbözik.
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;
A lekérdezés paraméteres formájának tervútmutatója:
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)';
Az előző példában a @stmt paraméter értéke a lekérdezés paraméteres formája. Az érték sp_create_plan_guide való felhasználásának egyetlen megbízható módja a sp_get_query_template rendszer által tárolt eljárás használata. A következő szkript használható a paraméteres lekérdezés lekérésére, majd egy terv útmutatójának létrehozására.
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)';
Fontos
A @stmt paraméter sp_get_query_template-hez való átadásakor a konstansok értéke befolyásolhatja a konstanst helyettesítő paraméterhez kiválasztott adattípust. Ez hatással lesz a terv útmutatóinak egyeztetésére. Előfordulhat, hogy több terv útmutatót kell létrehoznia a különböző paraméterértéktartományok kezeléséhez.
A SABLONterv-útmutatókat az SQL-terv útmutatóival együtt is használhatja. Létrehozhat például egy SABLONterv-útmutatót, amellyel meggyőződhet arról, hogy a lekérdezések egy osztálya paraméteres. Ezután létrehozhat egy SQL-terv útmutatót a lekérdezés paraméteres formájában.