Applies ToSQL Server 2012 Service Pack 3 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard

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

Symptomy

Po uruchomieniu zapytania w 64-bitowej wersji programu Microsoft SQL Server 2012 jest wyświetlany komunikat o błędzie informujący o 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

Wykonywanie zapytań trwa długo i napotyka SOS_MEMORY_TOPLEVELBLOCKALLOCATOR czeka. Po zbadaniu poniższych punktów informacyjnych znajdziesz bardzo małą dostępną wirtualną przestrzeń adresową:

  • DBCC MEMORYSTATUS-liczba procesów/systemowych w sekcji — dostępna pamięć wirtualna

  • DMV: sys.dm_os_process_memory-Column virtual_address_space_available_kb

Te wartości rozpoczynają się około 8 terabajtów (TB) w procesie x64 i kontynuują poruszanie się po kilku gigabajtach (GB).  Gdy znajdujesz się na etapie, w którym dostępna wirtualna przestrzeń adresowa jest bardzo niska, zapytania, które próbują wykonać przydział pamięci, mogą także napotkać typ oczekiwania CMEMTHREAD. Następujące punkty danych będą stale wzrastać:

  • DMV: sys.dm_os_process_memory i sys.dm_os_memory_nodes-Column virtual_address_space_reserved_kb

  • DBCC MEMORYSTATUS — sekcja Memory Manager — zarezerwowana maszyna wirtualna

Wartości te zwykle zwiększają się wielokrotności wartości "Max Server Memory" do niemal 8 TB.

Przyczyna

Gdy proces programu SQL Server osiągnął stan, w którym łączna pamięć serwera = pamięć serwera docelowego = Max pamięci serwera, w Menedżerze pamięci programu SQL Server są dostępne zasady pozwalające na tymczasowe wykonanie nowych przydziałów. Powtarzalny wzorzec przydziałów w takim stanie może powodować fragmentację bloków pamięci i zużycia wirtualnej przestrzeni adresowej. Jeśli ten proces powtarza się wielokrotnie, wirtualna przestrzeń adresowa programu SQL Server zostanie wyczerpana i pojawią się objawy wspomnianych wcześniej uwag.

Rozwiązanie

Informacje o aktualizacji zbiorczej

Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.

 

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zalecamy pobranie i zainstalowanie najnowszych aktualizacji zbiorczych programu SQL Server:

Ta poprawka zapobiega za braku pamięci i ciągłej redukcji dostępnej wirtualnej przestrzeni adresowej, którą można napotkać.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Więcej informacji

  • System Windows 2012 R2 umożliwia powiększenie wirtualnej przestrzeni adresowej o rozmiarze do 128 TB. Z tego powodu nie można zauważyć tego problemu w środowiskach Windows 2012 R2. Aby uzyskać więcej informacji, zobacz następujący temat w centrum deweloperskim Windows:limity pamięci dla systemu Windows i wersji programu Windows Server

  • Jeśli po zastosowaniu tej poprawki widzisz ciągły wzrost przestrzeni adresowej, możesz określić, które zapytania lub operacje żądają dużych fragmentów pamięci za pomocą zdarzenia rozszerzonego page_allocated . 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 operacje konserwacji indeksu, które występują często.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.