Aracılığıyla paylaş


SQL Server Management Studio'da (SSMS) sorgu yürütürken OutOfMemoryException hatası

Bu makale, büyük miktarda veri döndüren bir SQL sorgusu çalıştırmak için SQL Server Management Studio (SSMS) kullandığınızda oluşan sorunu çözmenize yardımcı olur.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 2874903

Belirtiler

Çok büyük miktarda veri döndüren bir SQL sorgusu çalıştırmak için SSMS kullandığınızda, aşağıdakine benzer bir hata iletisi alırsınız:

Toplu işlem yürütülürken bir hata oluştu. Hata mesajı şu şekildedir: 'System.OutOfMemoryException' türünde bir özel durum oluşturuldu

Neden

Bu sorun, SSMS'nin büyük sonuçlar için ayıracak bellek yetersiz olduğundan oluşur. SSMS 32 bitlik bir işlemdir. Bu nedenle, 2 GB kullanıcı modu sanal belleği ile sınırlıdır. SSMS, sonuç penceresinde veritabanı alanı başına ne kadar metin görüntülenebileceğine ilişkin yapay bir sınır uygular. Bu sınır Kılavuz modunda 64 KB ve Metin modunda 8 KB'tır. Sonuç kümesi çok büyükse, sorgu sonuçlarını görüntülemek için gereken bellek SSMS işleminin 2 GB sınırını aşabilir. Bu nedenle, büyük bir sonuç kümesi Belirtiler bölümünde belirtilen hataya neden olabilir.

Geçici çözüm

Bu sorunu geçici olarak çözmek için aşağıdaki yöntemlerden birini deneyin.

Yöntem 1: Sonuçları metin olarak çıktı olarak verir

Sorgu sonuçlarını metin olarak çıkarmak için sorgu penceresini yapılandırın. Metin çıktısı kılavuzdan daha az bellek kullanır ve sorgu sonuçlarını görüntülemek yeterli olabilir. Bu değişikliği yapmak için şu adımları izleyin:

  1. Sorgu penceresine sağ tıklayın.
  2. Sonuçlar'a Git.
  3. Metne Sonuçlar'ı seçin.

Yöntem 2: Sonuçları bir dosyaya verme

Sorgu sonuçlarını bir dosyaya çıkarmak için sorgu penceresini yapılandırın. Dosya çıkışı en az miktarda bellek kullanır. Bu, sonuç kümesini depolamak için daha fazla bellek ayırır. Bu değişikliği yapmak için şu adımları izleyin:

  1. Sorgu penceresine sağ tıklayın.
  2. Sonuçlar'ı seçin.
  3. Sonuçları Dosyaya seçin.
  4. Sorguyu çalıştırın ve sonuç dosyasının kaydedildiği konumu seçin.

Yöntem 3: sqlcmd kullanma

SQL sorgularını çalıştırmak için SSMS yerine sqlcmd Yardımcı Programı'nı kullanın. Bu yöntem, sorguların SSMS kullanıcı arabiriminin gerektirdiği kaynaklar olmadan çalıştırılmasını sağlar. Ayrıca, 32 bit SSMS işlemini etkileyen bellek kısıtlamasını önlemek için Sqlcmd.exe 64 bit sürümünü kullanabilirsiniz.