KB4575689 - FIX: Incorrect results can occur when you run linked server query with aggregates or joins on table with filtered index on a remote server in SQL Server 2016 and 2017

Applies to: SQL Server 2017 Developer on WindowsSQL Server 2017 Enterprise Core on WindowsSQL Server 2017 Enterprise on Windows

Symptoms


Assume that you run a query with aggregates and joins (for example: COUNT WITH GROUP BY) on a table with filtered index in SQL Server 2016 and 2017 that's used as a remote server, and the user doesn't have the VIEW DEFINITION permission. In this scenario, the linked server considers the filtered index as a full unique index, and the query returns incorrect results. 

More information


When you run aremote query, the linked server process uses index metadata to optimize thequery. When you don't have VIEW DEFINITION permission for the databasebeing queried, the metadata doesn't indicate that the index is afiltered index, and the query optimizer considers the index to be a full unique index. This fix corrects the index metadata for a filtered index when you don'thave VIEW DEFINITION permission for consideration by the Query Optimizer.

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section. 

Resolution


This issue is fixed in the following cumulative updates for SQL Server:
Note: This fix should be applied to theremote linked server.
About cumulative updates for SQL Server:
Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:

Workaround


To work around this issue, try either of the following methods:
  • Remove the filtered index.
  • Grant view definition to the user.
Ex: GRANT VIEW DEFINITION TO test_user;

References


Learn about the terminology that Microsoft uses to describe software updates.