Problembeschreibung
Wenn für den SQL-Plan die überlappende Ausführung aktiviert ist und die OPTION-Klausel (OPTIMIZE FOR) verwendet wird, liefert die Tabellenwertfunktion (TVF), die einen Parameter verwendet, der in derselben SQL-Anweisung übergeben wird, bei der ersten Ausführung falsche Ergebnisse.
Lösung
Dieses Problem wurde im folgenden kumulativen Update für SQL Server behoben:
Kumulatives Update 19 für SQL Server 2019
Hinweis Hier ist ein Beispiel dafür, dass nach der Installation dieses kumulativen Updates keine verschachtelte Ausführung verwendet wird:
DECLARE @start smalldatetime SELECT count(*) FROM dbo.GetData(@start) OPTION (OPTIMIZE FOR (@start = '2022-05-23T06:00:00')) CREATE FUNCTION [dbo].[GetData] ( @start datetime ) RETURNS TABLE AS RETURN SELECT t.id FROM dbo.TestTable t WHERE t.testdate >= @start GO CREATE TABLE [dbo].[TestTable]( [id] [int] IDENTITY(1,1) NOT NULL, [testdate] [datetime] NULL ) ON [PRIMARY] GO
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und Sicherheitsfixes aus dem vorherigen Build. Es wird empfohlen, den neuesten Build für Ihre Version von SQL Server zu installieren:
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Informationsquellen
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.