Symptomy
Załóżmy, że korzystasz z wystąpienia usług Analysis Services programu Microsoft SQL Server 2016. Gdy są buforowane dodatkowe i bardziej globalne obiekty zakresu, te pamięć podręczna nie są czyszczone. Może to spowodować ciągły wzrost pamięci, a wreszcie awarię serwera. Zakresy globalne są buforowane na podstawie wymagań dotyczących zabezpieczeń dla każdego użytkownika. W związku z tym ten problem będzie zazwyczaj występować tylko wtedy, gdy wystąpi jedna z następujących sytuacji:
-
W modelu są używane wyrażenia dynamiczne (na przykład username (), CustomData ()). Ten problem nie jest obowiązkowy, ale jest to typowa przyczyna. Gdy są obecne wyrażenia dynamiczne, każdy unikatowy użytkownik musi utworzyć własny unikatowy zakres globalny. Spowoduje to znaczne zwiększenie liczby globalnych zakresów, które trzeba utworzyć i będą buforowane.
-
Masz skomplikowany model z wieloma metadanymi i zabezpieczeniami. Wpływa to na koszt pamięci na obiekt zakresu. Ponieważ liczba buforowanych zakresów globalnych wzrasta, zwiększa się ilość pamięci na podstawie kosztu rozliczanej pamięci na obiekt.
-
Masz wiele unikatowych użytkowników nawiązujących połączenie z serwerem. Na przykład PowerBI.com może odświeżać kafelki na pulpicie nawigacyjnym dla każdego użytkownika w częstym harmonogramie. W takim przypadku usługi Analysis Services odbierają wiele połączeń i kwerend dla każdego unikatowego użytkownika, a liczba globalnych zakresów służy do przełączania wielu modułów pamięci.
Uwaga: po zastosowaniu tej poprawki wersja programu SQL Server zostanie 13.0.2170.0.
Rozwiązanie
Informacje o aktualizacji zbiorczej
Poprawka dotycząca tego problemu jest dostępna w następującej zbiorczej aktualizacji dla programu SQL Server:
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2016
Obejście
Aby obejść ten problem, ręcznie uruchom polecenie <ClearCache> XMLA w bazie danych w odpowiednim harmonogramie. Dzięki temu wszystkie globalne pamięć podręczna zakresów zostaną usunięte, a pamięć zostanie zmniejszona. Ta opcja powoduje pewną wydajność po połączeniu z następnym razem, ponieważ nie będzie można ponownie użyć buforowanego zakresu globalnego.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Informacje
Informacje o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.