Was ist das StatementParameterizationType-Planattribut?

7

Ich habe festgestellt, dass Ausführungspläne manchmal ein StatementParameterizationTypeAttribut enthalten.

Eigenschaftenfenster

Was ist das, was bedeutet es und wann erscheint es?

Paul White 9
quelle

Antworten:

11

Das StatementParameterizationTypeAttribut gibt die Art der Parametrisierung an, die auf die Anweisung angewendet wird.

Die Werte sind dokumentiert in sys.query_store_query:

  • 0 = Keine
  • 1 = Benutzer
  • 2 = Einfach
  • 3 = erzwungen

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';
Paul White 9
quelle