Olmayabilir yeterli sanal bellek SQL Server'da Veritabanları çok sayıda olduğunda

Makale çevirileri Makale çevirileri
Makale numarası: 316749 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Belirtiler

Olmayabilir yeterli kullanılabilir sanal adres alanı Microsoft SQL Server işleminde varsayılan yapılandırma değerlerini SQL Server kullanıyorsanız, aşağıdaki koşulların tümü doğru olduğunda:
  • Sunucunun, 2 GB veya daha fazla RAM vardır.
  • Çok sayıda veritabanları (örneğin, 500'den fazla) sistemde yok.
  • Veritabanlarının çoğunu güncelleştirilir (örneğin, veritabanlarının "salt okunur" durumu yoktur).
  • Çoğunlukla, 255 olan SQL Server çalışan iş parçacıkları için yeterli aynı anda etkin kullanıcı bağlantıları vardır.
SQL Server tüm 2 GB sanal adres alanı kullandıktan sonra aşağıdaki hata iletilerinden oluşturabilir (veya tam 3 GB'LIK sanal adres alanı ile SQL Server Enterprise Edition üzerinde kullanılacağını sonra / 3 GB Boot.ini dosyasında geçiş).

İleti 1

Hata: 17802, önem derecesi: 18, durum: 3
Sunucu olay iş parçacığı oluşturamadı.

<a1>Ileti</a1> 2

SQL Server process_loginread iş parçacığı spawn.

Ileti 3

UYARı: yordam önbelleğindeki bitişik bellek boşaltmak için onay.

Arabellek dağıtım: Çalınmış 3454 = ücretsiz 2540 yordamlar = 138 =
Inram = 0 kirli tutulduğu 1108 = 35 =
BANA / O = 0, latched = 0, diğer 214821 =
Arabellek sayaçları: Kaydedilen 222096 target = sağlaması 222096 = 215964 =
InternalReservation 547 ExternalReservation = 0 Min = ücretsiz 512 =
Yordamı önbelleği: TotalProcs 8 TotalPages = 138 InUsePages = 138 =
Dinamik Bellek Yöneticisi: çalınmış 3556 =
OS 497 genel = 1706 =
Plan query 755 Optimizer = = 0
Hizmet programlarını = 9 bağlantısı 1583 =
Genel bellek nesne: Kaynak 1119 Locks = 163 XDES = 1 SQLCache = 90 çoğaltma = 5 LockBytes = 2 ServerGlobal = = 20
Sorgu Bellek Yöneticisi: verir 0 Bekliyor = 0 en fazla = 164370 = kullanılabilir 164370 =

Neden

Güncelleştirilmiş her veritabanı için SQL Server yazılan ve önce günlük kayıtlarının biçimlendirmeyi kullanmak için en az 64 KB bloğu ayırır diske. Ilk günlük kaydı için veritabanı gibi bir INSERT, UPDATE veya DELETE deyimi sırasında oluşturulduğunda, bu tahsisat oluşur. Aktiviteyi ve oluşturulan günlük kayıtlarının boyutuna bağlı olarak, sonraki değişiklikler ek 64 KB'LIK ayırma, ayırma tetikleyebilir. SQL Server 7.0 üçten fazla 54 KB'LIK blokları tahsis. SQL Server 2000'de, tahsisat sayısı üst işlemci sayısına bir işlevi her veritabanı için SQL Server kullanmak için yapılandırılır.

Pratik Çözüm

Use -g başlangıç parametresi, bu ayırmalardan veritabanı için ek, ayrılmamış sanal bellek bırakın. -G parametresi, SQL Server 7.0 hizmet paketi Readme.txt ve SQL Server 2000 Çevrimiçi Kitapları'nda belgelenmiştir. "Ek bölümünde, bu makalede, Microsoft, bunun için uygun değeri belirlenemiyor ayarı kullanmanızı önerir ayarlardır bilgi".

Daha fazla bilgi

Tüm SQL Server Rezerv ancak <a2>256 MB (SQL Server 7.0)</a2> veya <a4>384 MB (SQL Server 2000) başlangıç sırasında sanal adres alanı 2 GB veya daha fazla RAM'i olan bir bilgisayarda, işlem arabellek havuzu tarafından kullanılacak. Ayrıca, veri ve yordam önbelleğinde depolamak için SQL Server arabellek havuz belleği 8 KB'den küçük olan SQL Server işlem gelen diğer çoğu bellek isteklere hizmet için kullanır. Kalan ayrılmamış belleği arabellek havuzundan sağlanan diğer ayırmalar ile kullanılmak üzere hazırlanmıştır. Bu ayırmalardan içerir, ancak bunlarla sınırlı değildir:
  • Stacks ve SQL Server'ı oluşturan tüm iş parçacıkları için ilişkili iş parçacığının ortam bloğu. SQL Server tüm 255 işçi iş parçacığı oluşturduktan sonra bu yaklaşık 140 MB'dir.
  • Ayırmalar, işler ya da diğer DLL tarafından yapılır (Bu, sistemden sisteme değişir) SQL Server adres alanını, gibi çalışan:
    • OLE DB sağlayıcılarından bağlantılı tüm sunucular.
    • Kullanımını sp_OA sistem tarafından yüklenen COM nesneleri, saklı yordamları veya saklı yordamlar genişletilmiş.
  • Genellikle, bağlantılı sunucular sp_OA, 20-25 MB, ancak büyük olasılıkla daha kullanıyorsanız veya genişletilmiş adres alanını yüklenen görüntüler (.exe veya .dll) saklı.
  • Işlem yığın ve SQL Server'ın oluşturabilir, diğer kümeler. Başlatma işlemi sırasında bu genellikle 10 MB, ancak bağlantılı sunucular, sp_OA veya genişletilmiş saklı yordamlar kullanıyorsanız, daha fazla olabilir.
  • 8 KB (örneğin, büyük bir sorgu planları için gereken büyük olan SQL Server işlem ayırma gönderip Ağ paket boyutu yapılandırma seçeneği ise 8 KB vb. yakın arabellekleri. Bu numarayı görmek için DBCC MEMORYSTATUS ' bildirilen ve 8 KB sayfa sayısı olarak bildirilen OS ayrılmış değere bakın. Bu normal değer 5 MB ' dir.
  • Her arabellek arabellek havuzu olan durum bilgisini izlemek için bir dizi. SQL Server, bu durumda, önemli ölçüde daha yüksek olabilir, Adres Pencereleme Uzantıları (AWE) etkinleştirilmişse, çalışmadığı sürece bu genelde yaklaşık 20 MB olur.
Veritabanları, büyük bir sayı olan sistemlerde, biçimlendirme günlük için gerekli olan 64 KB'LIK ayırma tüm kalan sanal bellek kaplar. Bu noktada sonraki ayırmalar, "Belirtiler" olarak listelenen hatalar birini veya birkaçını sonuçta çalışmayabilir bölümünde, bu makalede.

Kullanarak -g başlangıç parametresi, SQL Server'ın ek sanal bellek, böylece bu günlük ile ilgili tahsisat ve diğer normal tahsisat sanal adres alanı tükenmeye bırakın yönergesi.

Aşağıdaki önerilen bazı noktalar için başlangıç listeleri tablo -g değerine bağlı, veritabanları ve sunucu sürümü:
Bu tabloyu kapaBu tabloyu aç
VeritabanlarıSQL Server 7.0SQL Server 2000
250-g134Yok
500-g185Yok
750-g237Yok
1000-g288-g288
1250-g340-g340
1500-g392-g392
Bu tabloda listelenen normal değerler kullanılarak hesaplandığı ve bu da herhangi bir bağlantılı sunucu etkinliğini, sp_OA veya genişletilmiş saklı yordamlar, kullanımda olan varsayımına dayanır. Ayrıca, AWE kullanıyorsanız ve bu SQL Profiler kullanımda olduğu varsayımına dayanır. Bu durumlardan herhangi biri değerini artırmak gerektirebilecek -g.

Microsoft, sistemde bu sayı veritabanlarının olması için gereken ek yükü bir bütün olarak sistemin düşük performans sonuçlanabilir arabellek havuzu uzağa çok sanal bellek alma nedeniyle, bir sunucu bundan daha fazla veritabanları ile çalıştırmadan önce tüm önemli dikkate almak önerir.

Ayrıca, çok sayıda veritabanı oluşturma, sanal bellek en önemli bir etkisi vardır. Arabellek havuzu yetersiz bellek durumuna neden olabilecek bir veritabanı başına bellek ayırmalarını vardır. Örneğin, aşağıdaki hata iletisini alabilirsiniz:
Hata: 701, önem derecesi: 17, durum: 123.
Bu sorguyu çalıştırmak için yeterli sistem belleği yok.
SQL Server 2005, SQL Server'ın önceki sürümlerden daha fazla veritabanı başına meta verileri izlediğinden, bu tür bir yetersiz bellek durumu SQL Server 2005'te yaygın olabilir.

Işlem, sys.dm_db_index_usage_stats saklı yordamını kullanarak dizin kullanımı izlemek, önemli miktarda bellek gerektiriyor olabilir. Işlem, her veritabanı çok sayıda dizin varsa, önemli miktarda bellek gerektiriyor.

Özellikler

Makale numarası: 316749 - Last Review: 28 Şubat 2007 Çarşamba - Gözden geçirme: 11.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard Edition
Anahtar Kelimeler: 
kbmt kberrmsg kbtshoot kbnofix kbprb KB316749 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:316749

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com