Poprawka: Błąd braku pamięci podczas jest bardzo mało dostępnej pamięci wirtualnej przestrzeni adresowej procesu programu SQL Server

WAŻNE: Ten artykuł został przetłumaczony przy użyciu oprogramowania firmy Microsoft do tłumaczenia maszynowego i może być poprawiony przy użyciu technologii Community Translation Framework (CTF). Firma Microsoft udostępnia artykuły tłumaczone maszynowo, poprawione przez społeczność, a także tłumaczone przez tłumaczy profesjonalnych, aby zapewnić dostęp do wszystkich artykułów w bazie wiedzy w wielu językach. Artykuły tłumaczone maszynowo i poprawione mogą zawierać błędy pisowni, składniowe i gramatyczne. Firma Microsoft nie ponosi odpowiedzialności za żadne nieścisłości, błędy ani szkody spowodowane przez niepoprawne tłumaczenia zawartości ani przez korzystanie z niej przez klientów. Więcej o strukturze CTF: http://support.microsoft.com/gp/machine-translation-corrections/pl.

Anglojęzyczna wersja tego artykułu to: 3074434
Uwaga
Po zastosowaniu tej aktualizacji, należy dodać śledzenia Flaga - T8075 jako parametr uruchamiania, aby włączyć tę zmianę.
Symptomy
Po uruchomieniu kwerendy w 64-bitowej wersji 2014 Microsoft SQL Server lub Microsoft SQL Server 2012, pojawi się komunikat błędu braku pamięci, podobny do następującego w dzienniku błędów programu SQL Server:

Nie można przydzielić stron: FAIL_PAGE_ALLOCATION 513

Kwerendy zająć dużo czasu na zakończenie wykonywania i spotkanie czeka SOS_MEMORY_TOPLEVELBLOCKALLOCATOR.

Po sprawdzeniu następujące punkty informacyjne można znaleźć, że istnieje bardzo niskie dostępną wirtualną przestrzeń adresową:

  • DBCC MEMORYSTATUS - sekcja liczy się proces i System - dostępna pamięć wirtualna
  • DMV: sys.dm_os_process_memory - virtual_address_space_available_kb kolumny
Te wartości zacząć od około 8 terabajty (TB) na x64 przetworzyć i kontynuować zejść i osiągnąć kilka gigabajtów (GB).

Przebywając na etapie gdzie dostępnej wirtualnej przestrzeni adresowej jest bardzo niska, kwerend które próbujesz wykonać pamięci alokacji napotkać również oczekiwania typu CMEMTHREAD.

Następujące punkty danych będą nadal zwiększać z upływem czasu:
  • DMV: sys.dm_os_process_memory i sys.dm_os_memory_nodes Departament transportu - virtual_address_space_reserved_kb kolumny
  • DBCC MEMORYSTATUS - sekcja Menedżera pamięci - VM zarezerwowane

Te wartości będą zazwyczaj wzrost wielokrotności wartości "Maksymalna pamięć" do prawie 8 TB.
Przyczyna
Kiedy SQL Server proces osiągnął stan w przypadku, gdy całkowita pamięć serwera = pamięć serwera docelowego = Maksymalna pamięć, istnieją zasady w Menedżerze pamięci programu SQL Server do wynajęcia nowe przydziały żądać wielu stron 8 KB tymczasowo powiodła się. Wzór alokacji powtarzanego w takich warunkach może spowodować fragmentacji bloków pamięci i konsumpcji wirtualnej przestrzeni adresowej. Jeśli proces ten powtarza się tyle razy, program SQL Server wirtualnej przestrzeni adresowej zostanie wyczerpany, a można zauważyć objawy, które zostały wymienione wcześniej.
Rozwiązanie

Informacje o poprawce

Aby rozwiązać ten problem, należy zainstalować poprawkę z Poprawka: Błąd podczas procedury przechowywanej wzywa serwera połączonego w programie SQL Server 2014 inną procedurę składowaną.

Wymagania wstępne

Musi mieć Zbiorcza aktualizacja 3 dla programu SQL Server 2014 Service Pack 1 zainstalowany, aby można było zastosować tę poprawkę.

Ogłoszenie

Po zastosowaniu tej aktualizacji, należy dodać śledzenia Flaga - T8075 jako parametr uruchamiania, aby włączyć tę zmianę.

Informacje dotyczące zbiorczej aktualizacji

Ten problem został po raz pierwszy rozwiązany w następujących aktualizacji zbiorczej programu SQL Server.

Zalecenie: Zainstalować najnowszą aktualizację zbiorczą dla programu SQL Server
Każda nowa aktualizacja zbiorcza dla programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały zawarte w poprzedniej zbiorczej aktualizacji. Firma Microsoft zaleca, aby pobrać i zainstalować najnowsze aktualizacje zbiorcze dla programu SQL Server:


Ta poprawka zapobiega zarówno za mało pamięci, jak i ciągłego zmniejszania dostępnej wirtualnej przestrzeni adresowej używanej mogą wystąpić.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
  • Windows 2012 R2 pozwala wirtualnej przestrzeni adresowej rosnąć tak duży, jak 128 TB. W związku z tym może nie zauważyć tego problemu w środowiskach Windows 2012 R2. Aby uzyskać więcej informacji zobacz następujący temat w Centrum deweloperów systemu Windows:

    Limity pamięci dla wydań systemu Windows i systemu Windows Server
  • Jeśli widzisz stałego wzrostu w wirtualnej przestrzeni adresowej, nawet po zastosowaniu poprawki, można określić, które kwerendy lub operacji żądają dużych bloków pamięci za pomocą Page_allocated Rozszerzone zdarzenia. Przykładowy skrypt wygląda następująco:

    CREATE EVENT SESSION [memory_tracking] ON SERVERADD EVENT sqlos.page_allocated(    ACTION(package0.callstack,sqlos.cpu_id,sqlos.task_address,sqlos.worker_address,sqlserver.database_id,sqlserver.query_hash,sqlserver.request_id,sqlserver.session_id,sqlserver.sql_text)    WHERE ([number_pages]>(1)))ADD TARGET package0.event_file(SET filename=N'E:\Data\MSSQL11.MSSQLSERVER\MSSQL\Log\memory_tracking.xel')WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=PER_CPU,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)GO
    Zazwyczaj są to kopie zapasowe dziennika i operacji obsługi indeksu, które występują najczęściej.

Ostrzeżenie: ten artykuł przetłumaczono automatycznie

Właściwości

Identyfikator artykułu: 3074434 — ostatni przegląd: 10/10/2016 02:12:00 — zmiana: 9.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbsurveynew kbexpertiseadvanced kbfix kbmt KB3074434 KbMtpl
Opinia