증상
SQL 계획이 인터리브 실행을 사용하도록 설정하고 OPTION(OPTIMIZE FOR) 절을 사용하는 경우 동일한 SQL 문에 전달된 매개 변수를 사용하는 TVF(테이블 반환 함수)는 첫 번째 실행 시 잘못된 결과를 제공합니다.
해결 방법
이 문제는 SQL Server 대한 다음 누적 업데이트에서 해결되었습니다.
2019년 SQL Server 대한 누적 업데이트 19
참고 다음은 이 누적 업데이트를 설치한 후 인터리브 실행을 사용하지 않는 예제입니다.
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
SQL Server 대한 각각의 새로운 누적 업데이트에는 이전 빌드에 있던 모든 핫픽스 및 보안 수정 사항이 포함되어 있습니다. SQL Server 버전에 대한 최신 빌드를 설치하는 것이 좋습니다.
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.
참고 자료
Microsoft가 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아보세요.