Проблема
Предположим, что вы выполняете запрос с агрегатами и соединениями (например, COUNT WITH GROUP BY) к таблице с отфильтрованным индексом в SQL Server, которая используется в качестве удаленного сервера, и у пользователя нет разрешения VIEW DEFINITION. В этом сценарии связанный сервер рассматривает отфильтрованный индекс как полный уникальный индекс, и запрос возвращает неверные результаты.
Дополнительные сведения
При выполнении удаленного запроса связанный сервер использует метаданные индекса для оптимизации запроса. Если у вас нет разрешения VIEW DEFINITION для запрашиваемой базы данных, метаданные не указывают на то, что индекс является отфильтрованным индексом, а оптимизатор запросов считает индекс полным уникальным индексом. Это исправление исправляет метаданные индекса для отфильтрованного индекса, если у вас нет разрешения VIEW DEFINITION для рассмотрения оптимизатором запросов.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
- Накопительный пакет обновления 9 для SQL Server 2019 г.
- Накопительный пакет обновления 22 для SQL Server 2017 г.
- Накопительный пакет обновления 15 для SQL Server 2016 с пакетом обновления 2 (SP2)
Примечание: Это исправление должно быть применено к удаленному связанному серверу.
Сведения о накопительных обновлениях для SQL Server:
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
- Последнее накопительное обновление для SQL Server 2019 г.
- Последнее накопительное обновление для SQL Server 2017 г.
- Последнее накопительное обновление для SQL Server 2016 г.
Временное решение
Чтобы обойти эту проблему, попробуйте один из следующих методов:
- Удалите отфильтрованный индекс.
- Предоставьте пользователю определение представления. Например, ПРЕДОСТАВЛЕНИЕ ОПРЕДЕЛЕНИЯ ПРЕДСТАВЛЕНИЯ ДЛЯ test_user;
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.