Symptomy
Załóżmy, że uruchamiasz zapytanie z funkcjami agregowania i sprzężeniami (na przykład: COUNT WITH GROUP BY) w tabeli z indeksem filtrowanego w programie SQL Server, który jest używany jako serwer zdalny, a użytkownik nie ma uprawnienia DO DEFINICJI WIDOKU. W tym scenariuszu serwer połączony uznaje filtrowany indeks za pełny unikatowy indeks, a zapytanie zwraca niepoprawne wyniki.
Więcej informacji
Po uruchomieniu zapytania zdalnego proces serwera połączonego używa metadanych indeksu w celu zoptymalizowania zapytania. Jeśli nie masz uprawnienia VIEW DEFINITION dla bazy danych, która jest pytana, metadane nie wskazują, że indeks jest indeksem filtrowany, a optymalizator zapytań uznaje indeks za pełny unikatowy indeks. Ta poprawka poprawia metadane indeksu dla filtrowanego indeksu, jeśli nie masz uprawnienia DO WYŚWIETLANIA DEFINICJI przez optymalizator zapytań.
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Rozwiązanie
Ten problem został rozwiązany w następujących aktualizacjach skumulowanych programu SQL Server:
-
Aktualizacja skumulowana 22 dla programu SQL Server 2017https://support.microsoft.com/help/4577467
-
Aktualizacja skumulowana 15 dla programu SQL Server 2016 z dodatkiem SP2
Uwaga:Ta poprawka powinna zostać zastosowana do zdalnego serwera połączonego.
Informacje o aktualizacjach skumulowanych dla programu SQL Server:
Każda nowa aktualizacja skumulowana dla programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej aktualizacji skumulowanej. Zapoznaj się z najnowszymi aktualizacjami skumulowanymi dla programu SQL Server:
Obejście
Aby omiąć ten problem, wypróbuj jedną z następujących metod:
-
Usuń indeks filtrowany.
-
Udzielanie definicji widoku użytkownikowi. Przykład: NADAJ DEFINICJĘ WIDOKU TEST_USER;
Informacje
Poznaj terminy używane przez firmę Microsoft do opisywania aktualizacji oprogramowania.