2010-01-03 30 views
17

bu hatayı alıyorum çalıştırmak için kaynak havuzunun 'default' yeterli sistem belleği yok:bu sorguyu

bu sorguyu çalıştırmak için kaynak havuzunun 'default' yeterli sistem belleği yok.

Sadece aşağıda gösterildiği gibi 100.000 basit ekleme ifadesi çalıştırıyorum. Yanlışı 85.000'inci katına aldım.

Bu

... Peşin

use sampleautogrow 

INSERT INTO SampleData VALUES ('fazgypvlhl2svnh1t5di','8l8hzn95y5v20nlmoyzpq17v68chfjh9tbj496t4',1) 
INSERT INTO SampleData VALUES ('31t7phmjs7rcwi7d3ctg','852wm0l8zvd7k5vuemo16e67ydk9cq6rzp0f0sbs',2) 
INSERT INTO SampleData VALUES ('w3dtv4wsm3ho9l3073o1','udn28w25dogxb9ttwyqeieuz6almxg53a1ki72dq',1) 
INSERT INTO SampleData VALUES ('23u5uod07zilskyuhd7d','dopw0c76z7h1mu4p1hrfe8d7ei1z2rpwsffvk3pi',3) 

sayesinde Attığım bir sınıf için bir demo Jim M

Güncelleme: Sadece çok ilginç bir şey fark ettim. Başka bir veritabanı oluşturdum, SampleData tablosunu oluşturmayı unuttum. Sorguyu 100.000 satır eklemek için koştum ve tablonun varlığından şikayet etmeden önce bellek hatasından kurtuldu. Bu yüzden, sanırım 100,000 satırımı "okumaya" çalışıyorum.

cevap

32

Tek bir toplu işlemde 100.000 ekleme ifadeniz var mı? Sunucunuzun yalnızca isteği ayrıştırmak için daha fazla RAM'e ihtiyacı var. Daha fazla RAM satın alın, x64 sürümüne yükseltme yapın veya sunucuya gönderilen tekli paketlerin boyutunu azaltın. Yani. GO'u her şimdi ve burada .sql dosyasında serpin.

+0

1000 uçlar hiçbir soruna neden, neden 100.000 nedenini bir sorun değil mi? İşlemlerle ilgisi var mı? Neden "GO" ifadeleri eklemeye yardımcı olur? –

+0

Güncelleştirmeyi yukarıdaki orijinal soruya bakın. –

+9

Bir toplu işte 100k INSERT ifadeleri gönderdiğinizde sunucu başlangıçta yaklaşık 1 mil görecektir. 'şeyler' karakterleri. İçinde ne olduğunu bilmiyor, tüm noktalar ve boşluklar olabilir. İlk olarak ayrıştırılmalı ve T-SQL, satırlarda değil (topluca, Basic olduğu gibi) grup halinde ayrıştırılır. Bu ayrıştırma hafızayı tüketir ve bu gördüğünüz hatadır. Var olmayan bir tabloyla denediğinizde, sunucu, varolma zamanı sırasında değil, derleme zamanında gerçekleştiğinden, tablonun mevcut olup olmadığını kontrol edeceği noktaya bile ulaşmadı. İlk önce tüm partiyi ayrıştırmak zorunda ve bunu yapamaz. –

0

SQLServer Bağlantı Araçları uygulamasını deneyebilirsiniz. Her komutu tek tek yürüten Massive Sql Runner adlı bir özelliğe sahiptir. Bu özellik sayesinde betik komutlarını yürütmek için çok az hafıza kullanılacaktır ve artık probleminiz olmayacaktır.

SQL Server Connection Tools