Update: Wegen unzureichenden Arbeitsspeichers wird der virtuelle Adressraum des Prozesses SQL Server sehr wenig Arbeitsspeicher

Gilt für: SQL Server 2012 Service Pack 3SQL Server 2012 DeveloperSQL Server 2012 Enterprise Mehr

Nach Installation dieses Updates müssen Sie Hinzufügen der Trace flag - T8075 als Startparameter um diese Änderung zu aktivieren.

Problembeschreibung


Beim Ausführen einer Abfrage in eine 64-Bit-Version von Microsoft SQL Server 2012 erhalten Sie eine Fehlermeldung Out of Memory, die in der SQL Server-Fehlerprotokoll die folgenden ähnelt:
Fehler beim Reservieren Seiten: FAIL_PAGE_ALLOCATION 513
Abfragen dauern lange die Ausführung beenden und SOS_MEMORY_TOPLEVELBLOCKALLOCATOR wartet.Bei den folgenden Informationen: finden Sie sehr verfügbaren virtuellen Adressraum niedrig ist:
  • DBCC MEMORYSTATUS - Abschnitt Process-Systems zählt - verfügbarer virtueller Speicher
  • DMV: sys.dm_os_process_memory - Spalte virtual_address_space_available_kb
Diese Werte beginnen ca. 8 Terabyte (TB) auf ein X64 verarbeiten und weiter unten und ein paar Gigabyte (GB). Unterwegs auf der Bühne ist der verfügbaren virtuellen Adressraums sehr niedrig, versuchen Abfragen, die, Zuweisung auch Wartetyp CMEMTHREAD auftreten Speicher durchzuführen.Die folgenden Datenpunkte weiterhin zunimmt:
  • DMV: sys.dm_os_process_memory und sys.dm_os_memory_nodes - Spalte virtual_address_space_reserved_kb
  • DBCC MEMORYSTATUS - Speichermanager Abschnitt - VM reserviert
Diese Werte werden normalerweise als Vielfaches der Wert "max Server Memory" bis fast 8 TB erhöhen.

Ursache


Wenn der SQL Server-Prozess erreicht den Zustand bei insgesamt Serverspeicher = Ziel Serverspeicher = max Server Memory Richtlinien gibt es in SQL Server-Speicher-Manager neue Umlagen mehrere 8 KB-Seiten vorübergehend erfolgreich anfordern können. Unter dieser Bedingung wiederholt Zuweisungsmuster verursachen Fragmentierung Speicherblöcke und Verbrauch von virtuellem Adressraum. Dieser Vorgang wiederholt sich oft, virtuellen Adressraum SQL Server erschöpft und die zuvor beschriebenen Symptome bemerken.

Lösung


Informationen zum kumulativen Update

Das Problem wurde erstmals in folgenden kumulativen Update von SQL Server behoben.
Dieser Hotfix verhindert, dass nicht genügend Arbeitsspeicher und kontinuierlichen Verringerung des verfügbaren virtuellen Adressraums, auftreten können.

Status


Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen


  • Windows 2012 R2 können virtuelle Adressraum als als 128 TB groß. Daher bemerken Sie dieses Problem in Windows 2012 R2-Umgebung nicht. Weitere Informationen finden Sie unter dem folgenden Thema in der Windows-Entwicklungscenter:Speicherlimits für Windows und Windows Server frei
  • Wachstum im virtuellen Adressraum wird auch nach dem Update angezeigt, können Sie bestimmen, welche Abfragen oder Operationen große Teile des Arbeitsspeichers anfordern mit erweiterte Page_allocated -Ereignis. Ein Beispielskript sieht folgendermaßen aus:
    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
    Normalerweise sind Sicherungskopien und Index Wartung, die häufig auftreten.