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

Pärast selle värskenduse rakendamist pead lisama jälituslipp-T8075 Startup parameetrina selle muudatuse lubamiseks.

Sümptomid

Kui käivitate päringu Microsoft SQL Server 2012 64-bitises versioonis, kuvatakse SQL serveri tõrkelogi järgmine tõrketeade, mis sarnaneb järgmisega:

Nurjunud lehtede eraldamine: FAIL_PAGE_ALLOCATION 513

Päringud võtavad täitmise lõpuleviimiseks kaua aega ja SOS_MEMORY_TOPLEVELBLOCKALLOCATOR ootab. Kui uurite järgmisi andmeid, leiate, et saadaval on väga väike virtuaalmälu aadressiruumi.

  • DBCC MEMORYSTATUS – protsessi/süsteemi loendab jaotis-saadaolev virtuaalmälu

  • DMV: sys.dm_os_process_memory veerg virtual_address_space_available_kb

Need väärtused alustavad umbes 8 TB (TB) x64-protsessi kaudu ja jätkavad ronimist ja jõuavad mõne gigabaitini (GB).  Kui olete etapil, kus saadaolev virtuaalmälu aadressiruumi on väga väike, võivad päringud, mis proovivad mälu eraldada, esineda ka CMEMTHREAD. Järgmised andmepunktid püsivad aja jooksul veelgi.

  • DMV: sys.dm_os_process_memory ja sys.dm_os_memory_nodes veerg virtual_address_space_reserved_kb

  • DBCC MEMORYSTATUS-mälu Manageri jaotis – VM reserveeritud

Tavaliselt suurendavad need väärtused arvu "Max server Memory" kordselt kuni peaaegu 8 TB.

Põhjus

Kui SQL serveri protsess on jõudnud olekusse, kus Total serveri mälu = Target server Memory = Max serveri mälu, on SQL serveri mälu halduris poliitika, mis võimaldab uutel eraldamisel taotleda mitu 8 KB lehekülge, et see saaks ajutiselt õnnestuda. Selle tingimuse korral võib korduv jaotuse muster põhjustada virtuaalmälu ja virtuaalmälu aadressiruumi killustatust. Kui see protsess kordab mitu korda, on SQL serveri virtuaalmälu aadressiruumi ammendunud ja te märkate varem mainitud sümptomeid.

Lahendus

Kumulatiivse värskenduse teave

Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.

 

Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Soovitame teil alla laadida ja installida kumulatiivseid värskendusi SQL serveri jaoks:

See käigultparandus takistab nii mälust väljas kui ka saadaoleva virtuaalmälu aadressiruumi pidevat vähendamist.

Olek

Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.

Lisateave

  • Windows 2012 R2 võimaldab virtuaalmälu aadressiruumi kasvada nii suureks kui 128 TB. Seetõttu ei pruugi te seda probleemi märgata Windows 2012 R2 keskkonnas. Lisateavet leiate järgmistest artiklitest Windowsi dev Center:Windowsi ja Windows Serveri mälu piirangud

  • Kui kuvatakse virtuaalmälu aadressiruumi pidev kasv isegi pärast paranduse rakendamist, saate määrata, millised päringud või toimingud nõuavad suurt arvu mälu Page_allocated pikendatud sündmuse abil. Proovi skript näeb välja selline:

    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

    Tavaliselt on need Logi varukoopiad ja registri hooldustööd, mis toimuvad sageli.

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.