Birincil dosya grubu dolu SQL Server 2008


15

SQL Server içine toplu eklemek çalışıyorum büyük bir tablo (~ 50 milyon satır) var ve ben hata alıyorum:

'PRIMARY' dosya grubu dolu olduğundan, 'I 3 Kontur' veritabanındaki 'myDB' nesnesi için alan ayrılamadı. Gereksiz dosyaları silerek, dosya grubundaki nesneleri bırakarak, dosya grubuna ek dosyalar ekleyerek veya dosya grubundaki mevcut dosyalar için otomatik büyümeyi ayarlayarak disk alanı oluşturun.

Veritabanında yaklaşık 25 milyon sıra içeren başka bir tablo var. Bu veritabanı yalnızca tek bir makinede kullanılacak ve halihazırda var olan verileri çıkarmak için tasarlanacak ve hiçbir koşulda mevcut boyutunun ötesine geçmeyecektir.

Böyle bir durum için, SQL Server'ın şikayet etmemesi için bununla başa çıkmanın en iyi yolu nedir? Çözüm, bu DB'nin birden fazla kullanıcıya maruz kalmayacağı önemli mi?


2
Veritabanına daha fazla alan eklemeniz veya kullanılmayan nesneleri kaldırmanız gerekir. Sorun nedir?
Gordon Linoff

@GordonLinoff veritabanı oluşturulduğunda dosya grubu sınırsız büyümeye sahip olacak şekilde tasarlanmıştır ve yine de bu sorunla karşılaşıyorum. Bunun tekrarlanmasını önlemek için bir yol bulmayı umuyorum.
wootscootinboogie

1
Daha fazla fiziksel disk alanınız var mı? Öyleyse, SQL Server hata günlüklerini kontrol edin ve otomatik büyümenin neden başarısız olduğuna dair ek bilgi olup olmadığına bakın.
Kevin

Lütfen yeterli disk alanının bulunduğunu onaylar mısınız? Kısıtlı dosya büyümesi dışında (bu durum böyle değildir) tek mantıklı nedendir.
usr

1
Belki sql express sürümünün db boyut sınırını vuruyorsunuz.
Bruno Martinez

Yanıtlar:


17

Bu adımları takip et:

  1. Veritabanı depolama alanı ayırmasına ne kadar alan eklemek istediğinizi belirleyin:
    1. Windows Gezgini'ni aç
    2. Veritabanı dosyalarınızın bulunduğu disk sürücüsünü sağ tıklayın
    3. Özellikleri seçin
    4. Ne kadar kullanılabilir disk alanı olduğunu kontrol edin ve veritabanı için bunun ne kadarını ayırmak istediğinize karar verin
      ( Öneri: Veritabanı dosyalarını işletim sisteminizle aynı diske yerleştiriyorsanız en az% 20 disk alanı boş bırakın { Alt Öneri : Don Bunu yapmayın! Verilerinizi kendi diskine yeniden oluşturun / taşıyın; kendinizi G / Ç'ye batırıyorsunuz.} ve saf bir veri diski için en az% 8 bırakıyorsunuz; Bu sayılar, gerçek yüzde önerilerinin ne olduğunu tahmin ediyor vardır. )
  2. Veritabanı için depolama ayırmasını güncelleyin.
    1. SSMS'yi aç
    2. "Görünüm" sekmesini tıklayın
    3. "Nesne Gezgini" ni seçin
    4. "Veritabanları" klasörünü genişletin
    5. Toplu olarak eklemeye çalıştığınız veritabanına sağ tıklayın
    6. "Özellikler" i seçin
    7. Özellikler penceresinin solundaki "Sayfa seç" alanından "Dosyalar" liste seçeneğini tıklayın
    8. "Veritabanı dosyaları" satırını "Dosya grubu" ile "PRIMARY" olarak bulun
    9. "Başlangıç ​​Boyutu (MB)" numarasına veritabanı ayırmasına eklemek istediğiniz megabayt sayısını ekleyin
    10. "Tamam" tuşuna basın
      ( Buradayken "Otomatik Büyüme" değerlerinizi de göz önünde bulundurmak isteyebilirsiniz. )

Veritabanınıza verebildiğiniz kadar depolama alanı ayırmak istiyorsunuz. Alanınız biterse, otomatik olarak büyümeden bu hatayı alırsınız ve otomatik büyüme açıksa, her otomatik büyümede bir performans isabeti alırsınız. Sadece disk alanınız kalmadıysa, bu sizin cevabınızdır ve daha büyük bir diske ihtiyacınız vardır.


1
Hepimiz daha büyük DIK'ler istemiyoruz? : P
Noel Baba

12

Express Edition 2014'ün veritabanı başına 10 GB sınırı vardır. Bir veritabanının otomatik olarak büyümesi bu noktaya gelirse, SQL Server lisans sınırından bahsetmeden (belirsiz?) Hata iletisini atar. Çok fazla disk alanı olabilir, ancak yine de bu mesajı görüyorsunuz.

Tasarım izin veriyorsa, bu lisans kapsamında birden çok veritabanı kullanın.


1

Tam kurtarma modunda olduklarında veritabanlarında genellikle yer kalmaz. İşlem yapmıyorsanız ve manuel yedeklemeler yeterliyse, kurtarma modunu basit olarak değiştirebilirsiniz.

Günlük dosyasından alan kurtarmanız da gerekebilir. . . boşaltılabilir, ancak yine de alan kullanın.

Ancak, daha fazla çözüm sunabilecek olan DBA'lara bu soruyu sormak daha iyidir.


Bu başarısız bir günlük büyümesi sorunu değildir. Veri büyümesi başarısız oldu.
usr

@usr. . . Muhtemelen aynı temel disk alanını işgal ediyorlar. Sorun disk alanı eksikliğidir.
Gordon Linoff

Disk alanının mevcut olduğunu söylüyor. Ben de şüpheliydim diye sordum.
usr

Ne kadar boş disk alanı var / boş? Birincil dosya grubundaki tüm dosyaların geçerli boyutu ve büyüme ayarları nedir? Büyüme artışının mevcut boş alandan daha büyük olması mümkündür.
user9164

1

Benim durumumda, bu dosya birincil dosya (.mdf) veritabanının meta verilerini kaydetmek için yer olmadığında oluşur. Bu dosya sistem tablolarını içerir ve sadece verilerini içine kaydederler.

Dosyada biraz boşluk bırakın ve komutlar tekrar çalışır. Hepsi bu, tadını çıkarın


0

Birincil dosya grubunu tam hatayı çözmek için Veritabanı uygunluğuna gidin -> Dosyalar -> Veritabanı Dosyaları -> Dosya Grubu "PRIMARY" -> Otomatik Büyüme / Maks. Boyut ve Dosya Grubu Değiştir Veritabanı_adı Megabayt olarak 1, Maksimum Dosya Boyutu kontrolü Sınırsız sonra Tamam.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.