Problembeschreibung
Gehen Sie davon aus, dass Sie eine Abfrage mit Aggregaten und Verknüpfungen (z. B. ZÄHLEN MIT GRUPPE NACH) für eine Tabelle mit gefiltertem Index in SQL Server ausführen, die als Remoteserver verwendet wird, und dass der Benutzer nicht über die Berechtigung VIEW DEFINITION verfügt. In diesem Szenario betrachtet der verknüpfte Server den gefilterten Index als vollständig eindeutigen Index, und die Abfrage gibt falsche Ergebnisse zurück.
Weitere Informationen
Wenn Sie eine Remoteabfrage ausführen, verwendet der verknüpfte Serverprozess Indexmetadaten, um die Abfrage zu optimieren. Wenn Sie nicht über die Berechtigung VIEW DEFINITION für die abgefragte Datenbank verfügen, deuten die Metadaten nicht darauf hin, dass es sich bei dem Index um einen gefilterten Index handelt, und der Abfrageoptimierer betrachtet den Index als vollständig eindeutigen Index. Dieser Fix korrigiert die Indexmetadaten für einen gefilterten Index, wenn Sie vom Abfrageoptimierer nicht über die Berechtigung VIEW DEFINITION verfügen.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Lösung
Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server:
-
Kumulatives Update 22 für SQL Server 2017https://support.microsoft.com/help/4577467
-
Kumulatives Update 15 für SQL Server 2016 SP2https://support.microsoft.com/help/4577775
Hinweis: Dieser Fix sollte auf den remote verknüpften Server angewendet werden.
Informationen zu kumulativen Updates für SQL Server:
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server:
Problemumgehung
Um dieses Problem zu beheben, probieren Sie eine der folgenden Methoden aus:
-
Entfernen Sie den gefilterten Index.
-
Gewähren der Ansichtsdefinition für den Benutzer Beispiel: GRANT VIEW DEFINITION TO test_user;
Informationsquellen
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.