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