Yetersiz disk alanı nedeniyle veritabanı için yeni bir sayfa ayrılamadı


13

SQL Server Alma ve Verme Sihirbazı'nı kullanarak bu hatayı alıyorum:

Hata 0xc0202009: Veri Akışı Görev 1: SSIS Hata Kodu DTS_E_OLEDBERROR.
Bir OLE DB hatası oluştu. Hata kodu: 0x80004005.
'PRIMARY' dosya grubundaki yetersiz disk alanı nedeniyle 'database' veritabanı için yeni bir sayfa ayrılamadı. Dosya grubundaki nesneleri bırakarak, dosya grubuna ek dosyalar ekleyerek veya dosya grubundaki varolan dosyalar için otomatik büyümeyi ayarlayarak gerekli alanı oluşturun.

Ben 2GB dosyaları bir dizi yüklemeye çalışıyorum ve 4. dosyayı yüklerken, ben bile Veritabanı özellikleri> Dosyalar gidin ve Filegroup'ın autogrowth 2500 MB ve maksimum boyut sınırsız değiştirmek sonra yukarıdaki hata mesajı almaya devam.

En iyi geçici çözüm nedir? Bu veriler eninde sonunda 60-80GB alacaktır.


1
Hangi SQL Server sürümünü kullanıyorsunuz? "Veritabanı" için veri dosyalarını depolayan sürücülerde ne kadar boş alan var?
nabrond

2
Hata iletisi size "en iyi geçici çözümleri" bildirir: Dosya grubundaki nesneleri bırakarak, dosya grubuna ek dosyalar ekleyerek veya dosya grubundaki varolan dosyalar için otomatik büyümeyi ayarlayarak gerekli alanı oluşturun. Size daha ne söyleyebileceğimizden emin değilim.

1
Brandon, SQL SERVER 2012. Veritabanı için veri dosyalarını depolayan sürücüde 760 gb boş alan. Ken, otomatik büyüme özelliğini etkinleştirdim, otomatik büyüme 2500 MB büyüyor ve sınırsız boyut kazanıyor. Yine de bu sorunla karşılaşıyor olabilir miyim? Etkinleştirilmesi gereken birden fazla otomatik büyüme olması mümkün müdür?

1
DB'yi manuel olarak büyütmeyi denediniz mi?

1
Otomatik büyüme yalnızca öğeler arasında çalışıyor olabilir ve ONE eklentisi sınırın üzerine çıkabilir mi? Bahse girerim - 20000 gb'lık bir eklenti 2500 gb'lık bir otomatik büyümede başarısız olursa .... 900mb boş olabilir ve eklenti başarısız olur.
TomTom

Yanıtlar:


11

Sql ekspres veritabanı 10g. Bunun, aldığınız hata mesajına benzer olduğuna inanıyorum.

Bu sorunla bir kez müşteride karşılaştım ve anlaması biraz zaman aldı.

hangi sql sürümünü kullanıyorsunuz


1
bu çözüm beni kurtardı! Express sürümündeydim ve Dev'e geçtim.
Israel Rodriguez

7

Eğer Are de emin öyle

'PRIMARY' dosya grubundaki yetersiz disk alanı nedeniyle 'database' veritabanı için yeni bir sayfa ayrılamadı.

ve yok

'PRIMARY' dosya grubundaki yetersiz disk alanı nedeniyle 'tempdb' veritabanı için yeni bir sayfa ayrılamadı.

?

Aslında [tempdb]hata mesajındaysa, bu [tempdb], diğer veritabanından ayrılmış uygun boyutta bir diskte olduğundan emin olarak ayrı olarak yönetilmesi gereken bir şeydir .

[tempdb]Hata mesajında değilse , bu tür bir "yüklemenin" [tempdb]oldukça zor olacağını düşünürdüm . Mı [tempdb]aynı diske / LUN'daki 'database'? Öyleyse, büyük olasılıkla birden çok dosya büyümesi girişimi (birden çok veritabanında) ile sorununuzu artırıyorsunuzdur. Dolayısıyla bu "yükleme" işlemini yaparken de izlediğinizden emin olun [tempdb].

Eğer [tempdb]ayrı bir sürücüde olduğunu ve konum belli yeterli alana sahip olduğunu, devam edip ediyorum boyutu 's nihai durumdaki boyutu Öngördüğünüz için veri dosyası:

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE
    (
    NAME = datafile,
    SIZE = 60GB,
    FILEGROWTH = 5GB
);
GO

Ayrıca, veritabanının günlük dosyasının veri dosyasından ayrı olduğundan emin olun. Değilse, rekabet eden büyüme olaylarına geri dönersiniz. Ayrı disklerde iseler, o zaman ben de geçip uygun şekilde boyutlandırırdım.

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 8000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 16000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 24000MB
);
GO
...

istediğiniz günlük dosyası boyutuna ulaşıncaya kadar. Büyümenizi belirli bir boyuta ayarlayacağınız 80 GB diyelim. Paul Randal ve Kimberly Tripp tarafından önerilen değerleri kullanıyorum

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 80000MB,
    FILEGROWTH = 8000MB
);

6

Elle büyütmeyi deneyin:

Nesne Gezgini'nde, SQL Server Veritabanı Altyapısı'nın bir örneğine bağlanın ve bu örneği genişletin.

Veritabanları'nı genişletin, artırmak için veritabanını sağ tıklatın ve sonra Özellikler'i tıklatın.

Veritabanı Özellikleri'nde Dosyalar sayfasını seçin.

Varolan bir dosyanın boyutunu artırmak için, dosyanın Başlangıç ​​Boyutu (MB) sütunundaki değeri artırın. Veritabanının boyutunu en az 1 megabayt arttırmalısınız.

Yeni bir dosya ekleyerek veritabanının boyutunu artırmak için Ekle'yi tıklatın ve sonra yeni dosya için değerleri girin. Daha fazla bilgi için bkz. Veritabanına Veri veya Günlük Dosyaları Ekleme.

6. tık OK.

Gönderen: MSDN


4
Manuel genişletme iyidir çünkü size daha fazla ayrıntı anlatabilir. Benim durumumda: "CREATE DATABASE veya ALTER DATABASE başarısız çünkü sonuçta elde edilen kümülatif veritabanı boyutu veritabanı başına 10240 MB lisans sınırınızı aşacaktır." Bu da kendini açıklayıcı.
user824276

1

Veritabanından alan boşaltmak için aşağıdaki komut dosyalarını da kullanabilirsiniz:

DELETE FROM STActionLog
where id in (SELECT TOP 100000 id
             FROM STActionLog
             ORDER BY actionDate ASC)

delete from STActionLog
where actionDate < '2019-08-01'

Bunlar hata bana yardımcı olur :) Ayrıca bilgisayarda yeterli disk alanı olduğundan emin olun.

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.