Symptomy
Jeśli w planie SQL włączono interleaved execution i jest używana klauzula OPTION (OPTIMIZE FOR), funkcja o wartości tabeli (TVF), która używa parametru przekazanego w tej samej instrukcji SQL, daje niepoprawne wyniki podczas pierwszego uruchomienia.
Rozwiązanie
Ten problem został rozwiązany w następującej aktualizacji zbiorczej dla SQL Server:
Aktualizacja zbiorcza 19 dla SQL Server 2019 r.
Uwaga 16. Oto przykład nieużywania interleaved execution po zainstalowaniu tej aktualizacji zbiorczej:
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
Każda nowa aktualizacja zbiorcza dla SQL Server zawiera wszystkie poprawki i poprawki zabezpieczeń, które były w poprzedniej kompilacji. Zalecamy zainstalowanie najnowszej kompilacji dla twojej wersji SQL Server:
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Informacje
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.