KB5022920 - 修正: パラメーターと OPTION (OPTIMIZE FOR) 句を使用するテーブル値関数が、初回実行で正しくない結果を与える

適用先
SQL Server 2019 on Linux SQL Server 2019 on Windows

現象

SQL プランでインタリーブ実行が有効になっていて、OPTION (OPTIMIZE FOR) 句を使用している場合、同じ SQL ステートメントで渡されたパラメーターを使用するテーブル値関数 (TVF) は、初回実行で正しくない結果を示します。

解決策

この問題は、次の SQL Server 用の累積的な更新プログラムで修正されています。

SQL Server 2019 の累積的な更新プログラム 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 用の新しい累積的な更新プログラムには、以前のビルドであったすべての修正プログラムとセキュリティ修正プログラムが含まれます。 ご使用のバージョンの SQL Server 用の最新ビルドをインストールすることをお勧めします。

SQL Server 2019 の最新の累積的な更新プログラム

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。