Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

Bu güncelleştirmeyi uyguladıktan sonra, bu değişikliği etkinleştirmek için Trace bayrağı-T8075 ' u başlangıç parametresi olarak eklemeniz gerekir.

Belirtiler

Microsoft SQL Server 2012 'in 64 bit sürümünde bir sorgu çalıştırdığınızda, SQL Server hata günlüğünde aşağıdakine benzer bir bellek yetersiz hata iletisi alırsınız:

Sayfa ayrılamadı: FAIL_PAGE_ALLOCATION 513

Sorgunun yürütmeyi tamamlaması uzun sürer ve SOS_MEMORY_TOPLEVELBLOCKALLOCATOR bekler. Aşağıdaki bilgi noktalarını incelediğinizde, çok az kullanılabilir sanal adres alanı olduğunu fark edebilirsiniz:

  • DBCC MEMORYSTATUS-Process/System Counts bölümü-kullanılabilir sanal bellek

  • DMV: sys.dm_os_process_memory-sütun virtual_address_space_available_kb

Bu değerler, bir x64 işleminde 8 terabayt (TB) etrafında başlıyor ve biraz daha  Kullanılabilir sanal adres alanının çok az olduğu bir aşamada olduğunuzda, bellek ayırmayı gerçekleştirmeye çalışan sorgular da CMEMTHREAD türünün bir bekleme türüyle karşılaşabilir. Aşağıdaki veri noktaları zamanla artmaya devam edecektir:

  • DMV: sys.dm_os_process_memory ve sys.dm_os_memory_nodes-sütun virtual_address_space_reserved_kb

  • DBCC MEMORYSTATUS-Memory Manager bölümü-VM ayrıldı

Bu değerler genellikle "Max Server Memory" değerinin neredeyse 8 TB kadar artar.

Neden

SQL Server işlemi Toplam Server Memory = hedef sunucu belleği = hedef sunucu belleği = Max Server Memory değerine ulaştığında, SQL Server bellek yöneticisinde, yeni ayırmaya izin vermek Böyle bir koşulda tekrarlanan ayırma düzeni, bellek bloklarının parçalanmasına ve sanal adres alanının tüketimine neden olabilir. Bu işlem birçok defa yinelenirse, SQL Server sanal adres alanı tükendi ve yukarıda belirtilen belirtileri fark edebilirsiniz.

Çözüm

Toplu güncelleştirme bilgileri

Sorun ilk olarak SQL Server 'ın aşağıdaki toplu güncelleştirmesinde giderilmiştir.

 

Her bir SQL Server toplu güncelleştirmesi, önceki toplu güncelleştirmeyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. En son SQL Server güncelleştirmelerini indirip yüklemenizi öneririz:

Bu düzeltme, hem bellek dışında hem de karşılaşabileceğiniz kullanılabilir sanal adres alanının sürekli azalmalarını engeller.

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Ek Bilgi

  • Windows 2012 R2, sanal adres alanının 128 TB kadar genişmesine olanak tanır. Bu nedenle, Windows 2012 R2 ortamlarında bu sorunla karşılaşabilirsiniz. Daha fazla bilgi için Windows Geliştirme Merkezi 'nde aşağıdaki konuya bakın:Windows ve Windows Server sürümleri Için bellek sınırları

  • Düzeltmeyi uyguladıktan sonra bile sanal adres alanında sürekli büyüme görüyorsanız, Page_allocated genişletilmiş olayı kullanarak hangi sorguların veya işlemlerin büyük miktarda bellek istediğini belirleyebilirsiniz. Örnek bir komut dosyası şuna benzer:

    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

    Genellikle bunlar günlük yedekleri ve Dizin bakımı işlemleri ile sık karşılaşılan operasyonlardır.

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?

Geri bildiriminiz için teşekkürler!

×