SQL Server "PRIMARY filegroup is full" — Neden Büyümüyor?
1105 hatasında datafile boyutu, MAXSIZE, autogrowth ve disk alanı kontrolü; dosya ekleme ile büyütme arasındaki doğru karar.
Operasyonel Doğrulama & Güvenilirlik Standardı
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
Could not allocate space for object 'dbo.Siparis' in database 'app'
because the 'PRIMARY' filegroup is full. Create disk space by deleting
unneeded files, dropping objects in the filegroup, adding additional files
to the filegroup, or setting autogrowth on for existing files in the filegroup.Bu doğrudan "disk doldu" hatası değildir; veritabanı dosyasının izin verilen sınırlar dahilinde büyüyemediğini gösterir.
▸Adım Adım Teşhis
1. Dosya Ayarlarını ve Büyüme Parametrelerini İnceleyin
SELECT name, physical_name,
size / 128.0 AS boyut_mb,
max_size, -- -1 = sınırsız, 268435456 = 2 TB
growth,
is_percent_growth
FROM sys.database_files;| Bulgu | Anlamı | Çözüm |
|---|---|---|
max_size değerine ulaşılmış | Dosya üst sınırına takılmıştır | MAXSIZE artırın veya yeni dosya ekleyin |
growth = 0 | Otomatik büyüme (autogrowth) kapalıdır | Autogrowth özelliğini açın |
is_percent_growth = 1 | Yüzde ile büyüme etkindir | Sabit megabayt (MB) büyümesine çevirin |
2. İşletim Sistemi Diskini Kontrol Edin
Veritabanı dosyası büyümek istese bile fiziksel diskte boş alan kalmamışsa bu hata verilir.
3. PRIMARY Dosya Grubu Tehlikesi
Kullanıcı tablolarını PRIMARY grubunda tutmak risklidir: Sistem katalogları da bu grupta olduğundan, dolduğunda yalnızca tablolar değil tüm veritabanı metadata işlemleri kilitlenir.
▸Çözüm Yolları
1. Sabit MB ile Autogrowth Ayarlayın
ALTER DATABASE app MODIFY FILE
(NAME = app_data, SIZE = 20GB, FILEGROWTH = 512MB, MAXSIZE = 200GB);%10) büyük veritabanlarında tehlikelidir: 1 TB'lık bir dosyada %10 büyüme tek seferde 100 GB tahsisat demektir ve büyüme süresince tüm yazma işlemleri duraksar.2. Dosya Grubuna Yeni Veri Dosyası (.ndf) Ekleyin
ALTER DATABASE app ADD FILE
(NAME = app_data2,
FILENAME = 'D:\Data\app_data2.ndf',
SIZE = 10GB, FILEGROWTH = 512MB, MAXSIZE = 100GB)
TO FILEGROUP [PRIMARY];3. Kalıcı Mimari Çözüm: Ayrı Kullanıcı Dosya Grubu
Kullanıcı nesnelerini FG_DATA gibi ayrı bir dosya grubuna taşımak sistem kataloglarını korur.
▸Bunu Bir Daha Yaşamamak İçin
İki metriği eşzamanlı izleyin: Dosya doluluk yüzdesi ve MAXSIZE'a kalan mesafe. %30 dolu görünen ancak MAXSIZE'a 10 MB kalmış bir dosya ilk toplu işlemde çöker.
- •İlgili Hata: SQL Server Msg 9002 Transaction Log Full
- •Kardeş Hata (Oracle): Oracle ORA-01653: unable to extend table in tablespace
- •Veritabanı Hub: SQL Server Üretim Mimarisi Rehberi
Diğer Veritabanı Hata Teşhisleri
Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.
SQL Server Error 18456: State Kodlarına Göre Gerçek Neden
18456 hatasında State numarası gerçek nedeni söyler. State 5, 8, 11, 18, 38 ve 40 için ayrı çözümler, ERRORLOG okuma komutları.
SQL Server Error 1205 Deadlock: Grafiği Bulma ve Önleme
SQL Server 1205 hatasında deadlock grafiğini system_health oturumundan çıkarma, kurban seçimini anlama ve kalıcı önleme yöntemleri.
SQL Server Pool Timeout: Bağlantı Havuzu Tükenmesi Çözümü
"Timeout expired prior to obtaining a connection from the pool" hatasının komut zaman aşımından farkı, sızıntı tespiti ve .NET tarafında kalıcı düzeltme.