Symptomer
Antag, at du kører en forespørgsel med aggregeringer og joinforbindelser (for eksempel: TÆL MED GROUP BY) på en tabel med filtreret indeks i SQL Server, der bruges som fjernserver, og brugeren har ikke tilladelsen VIS DEFINITION. I dette scenarie betragter den sammenkædede server det filtrerede indeks som et fuldt entydigt indeks, og forespørgslen returnerer forkerte resultater.
Flere oplysninger
Når du kører en ekstern forespørgsel, bruger den sammenkædede serverproces indeksmetadata til at optimere forespørgslen. Hvis du ikke har VISNINGSDEFINITION-tilladelse til den database, der forespørges på, angiver metadataene ikke, at indekset er et filtreret indeks, og forespørgselsoptimering betragter indekset som et fuldt entydigt indeks. Denne rettelse retter indeksmetadataene for et filtreret indeks, når du ikke har tilladelse til at vise definition, så den kan tages i betragtning af forespørgselsoptimeringen.
Status
Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".
Løsning
Dette problem er rettet i følgende kumulative opdateringer til SQL Server:
- Akkumuleret opdatering 9 til SQL Server 2019
- Samlet opdatering 22 til SQL Server 2017
- Kumulativ opdatering 15 til SQL Server 2016 SP2
Bemærk: Denne rettelse bør anvendes på den fjerntilknyttede server.
Om kumulative opdateringer til SQL Server:
Hver ny kumulativ opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige kumulative opdatering. Se de seneste kumulative opdateringer til SQL Server:
- Seneste kumulative opdatering til SQL Server 2019
- Seneste kumulative opdatering til SQL Server 2017
- Seneste kumulative opdatering til SQL Server 2016
Løsning
Du kan løse dette problem ved at prøve en af følgende metoder:
- Fjern det filtrerede indeks.
- Giv visningsdefinition til brugeren. Eksempel: GIV VISNINGSDEFINITION TIL test_user;
Referencer
Få mere at vide om den terminologi, som Microsoft bruger til at beskrive softwareopdateringer.