KB4575689 - 修正: SQL Server のリモート サーバーで、フィルター処理されたインデックスを使用したテーブルで集計または結合を使用してリンク サーバー クエリを実行すると、誤った結果が発生する可能性があります

適用先
SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2016 Service Pack 2 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2019 on Windows

現象

リモート サーバーとして使用されている SQL Server のフィルター処理されたインデックスを持つテーブルで集計と結合 (例: COUNT WITH GROUP BY) を含むクエリを実行し、ユーザーに VIEW DEFINITION アクセス許可がないとします。 このシナリオでは、リンク サーバーはフィルター処理されたインデックスを完全な一意のインデックスと見なし、クエリは間違った結果を返します。

詳細情報

リモート クエリを実行すると、リンク サーバー プロセスはインデックス メタデータを使用してクエリを最適化します。 クエリ対象のデータベースに対する VIEW DEFINITION アクセス許可がない場合、メタデータはインデックスがフィルター処理されたインデックスであることを示さず、クエリ オプティマイザーはインデックスを完全な一意インデックスと見なします。 この修正プログラムは、クエリ オプティマイザーで検討する VIEW DEFINITION アクセス許可がない場合に、フィルター処理されたインデックスのインデックス メタデータを修正します。

状態

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

解決策

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

メモ: この修正プログラムは、リモート リンク サーバーに適用する必要があります。

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

回避策

この問題を回避するには、次のいずれかの方法を試してください。

  • フィルター処理されたインデックスを削除します。
  • ビュー定義をユーザーに付与します。 例: GRANT VIEW DEFINITION TO test_user;

参考資料

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