Ich habe festgestellt, dass Ausführungspläne manchmal ein StatementParameterizationType
Attribut enthalten.
Was ist das, was bedeutet es und wann erscheint es?
Ich habe festgestellt, dass Ausführungspläne manchmal ein StatementParameterizationType
Attribut enthalten.
Was ist das, was bedeutet es und wann erscheint es?
Antworten:
Das StatementParameterizationType
Attribut gibt die Art der Parametrisierung an, die auf die Anweisung angewendet wird.
Die Werte sind dokumentiert in sys.query_store_query
:
Es wird nur auf dem Stammknoten von Plänen nach der Ausführung ("tatsächlich") angezeigt .
Der Abfragespeicher muss ebenfalls aktiviert sein , damit dieses Attribut angezeigt wird (z. B. in SSMS).
AdventureWorks- Demo:
USE AdventureWorks2017;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
ALTER DATABASE CURRENT SET PARAMETERIZATION SIMPLE;
GO
-- None (0)
SELECT COUNT_BIG(*)
FROM Production.Product AS P
WHERE P.Color = N'Red';
GO
-- User (1)
EXECUTE sys.sp_executesql
@stmt = N'
SELECT COUNT_BIG(*)
FROM Production.Product AS P
WHERE P.Color = @Color;',
@params = N'@Color nvarchar(15)',
@Color = N'Red';
GO
-- Simple (2)
SELECT A.AddressID
FROM Person.[Address] AS A
WHERE A.AddressLine1 = N'1 Smiling Tree Court';
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
ALTER DATABASE CURRENT SET PARAMETERIZATION FORCED;
GO
-- Forced (3)
SELECT COUNT_BIG(*)
FROM Production.Product AS P
WHERE P.Color = N'Red';