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.
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.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
This issue is fixed in the following cumulative updates for SQL 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:
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;