Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Solves the problem that SQL Server instances are locked when the storage space is full

Son Güncelleme:Oct 03, 2026

Bir ApsaraDB RDS for SQL Server örneğinde disk alanı tükendiğinde, veri kaybını önlemek için örnek otomatik olarak kilitlenir. Kilitlendiğinde tüm yazma işlemleri başarısız olur ve RDS konsolundaki çalışıyor durum göstergesi kilitli durumu yansıtır.

Depolama alanı üç nedenle dolabilir:

  • Yüksek günlük dosyası kullanımı — işlem hacminin yüksek olması veya tekil işlemlerin çok büyük olması nedeniyle işlem günlükleri sürekli büyür.

  • Yüksek veri dosyası kullanımı — veritabanı veri dosyaları, satır silimlerinden sonra otomatik olarak geri kazanılmayan ayrılmış alanı biriktirir.

  • Yüksek geçici dosya kullanımı — tempdb aşırı miktarda alan kullanır.

Bu konu, örneğinizde hangi nedenin geçerli olduğunu nasıl tespit edeceğinizi ve sorunu nasıl çözeceğinizi açıklar.

Alan kullanımını kontrol edin

İki yöntem mevcuttur. Hızlı bir genel bakış için 1. Yöntemi, veritabanı başına kesin dosya boyutları için 2. Yöntemi kullanın.

1. Yöntem: İzleme sayfasını görüntüleyin

Örnek izleme sayfasında aşağıdaki ölçümleri kontrol edin. Ayrıntılar için bkz. Standart izlemeyi görüntüle.

Ölçüm Ne ölçer
Tüketilen disk alanı boyutu Tüm kullanıcı veritabanları için veri dosyaları ve günlük dosyaları
Veri boyutu Tüm kullanıcı veritabanları için veri dosyaları (.mdf ve .ndf)
Tüketilen günlük alanı boyutu Tüm kullanıcı veritabanları için günlük dosyaları (.ldf)
Geçici dosya boyutu tempdb için tüm .mdf, .ndf ve .ldf dosyaları
Sistem dosyası alanı kullanımı master, msdb ve model için veri ve günlük dosyaları ile SQL Server örnek dizini altındaki sistem dosyaları (hata günlükleri, DLL dosyaları vb.)

2. Yöntem: Bir SQL sorgusu çalıştırın

Örneğe bağlanın ve tüm veritabanlarındaki veri dosyalarının (.mdf ve .ndf) ve günlük dosyalarının (.ldf) kesin boyutunu kontrol etmek için SQL deyimlerini çalıştırın. Ayrıntılar için bkz. RDS for SQL Server veritabanının ve veritabanındaki tabloların boyutunu nasıl görüntülerim.

Kilidi çözün

Örnek yapılandırmalarını veya verileri değiştirmek gibi risk içeren işlemler gerçekleştirirken, veri güvenliğini sağlamak için örneklerin olağanüstü durum kurtarma ve hata toleransı yeteneklerini kontrol edin.
ECS ve RDS örnekleri dahil ancak bunlarla sınırlı olmayan örneklerin yapılandırmalarını ve verilerini değiştirmeden önce anlık görüntü oluşturmanızı veya RDS günlük yedeklemesini etkinleştirmenizi öneririz.
Alibaba Cloud Management konsolunda oturum açma hesabı ve parola gibi güvenlik bilgilerini yetkilendirdiyseniz veya gönderdiyseniz, bu bilgileri zamanında değiştirmenizi öneririz.

Depolama alanını yükseltin

Depolama alanını yükseltmek örneği hemen kilidden çıkarır. Adımlar için bkz. ApsaraDB RDS for SQL Server örneğinin teknik özelliklerini değiştirme.

Örnek zaten maksimum depolama sınırına ulaştıysa, alan boşaltırken geçici olarak kilidi açmak için bir destek talebi gönderin.

Yüksek günlük dosyası kullanımını çözün

Nedeni teşhis edin

Örneğe bağlanın ve aşağıdaki sorguyu çalıştırın:

SELECT name, log_reuse_wait, log_reuse_wait_desc FROM sys.databases;

log_reuse_wait_desc değeri LOG_BACKUP ise işlem günlüklerini küçültün (aşağıya bakın).

**İşlem günlüğünü küçültün (log_reuse_wait_desc değeri LOG_BACKUP olduğunda)**

İşlem günlüğünü küçültmek için ApsaraDB RDS for SQL Server örneğinin işlem günlüklerini nasıl küçültürüm bölümündeki talimatları izleyin.

Günlük dosyası çok büyükse yedekleme daha uzun sürer. Küçültme sırasında işlenmemiş işlemler varsa tek bir küçültme geçişi tüm alanı geri kazanmayabilir. Yedekleme tamamlandıktan sonra küçültme işlemini tekrar çalıştırın.

Tekrarlamayı önleyin: Büyük işlemleri bölün

Günlüklerin hızlı büyümesi neredeyse her zaman yüksek işlem hacminden veya çok büyük tekil işlemlerden kaynaklanır. Örneğin, tek bir işlem 5 milyon satırı güncelliyorsa bunu 100.000 satırlık 50 toplu işe bölün. Daha küçük işlemler daha az günlük büyümesine neden olur ve daha sık kesmeye olanak tanır.

Yüksek veri dosyası kullanımını çözün

Satır silindiğinde veri dosyaları otomatik olarak küçülmez — ayrılmış alan ayrılmış olarak kalır. Hangi veritabanlarının önemli miktarda kullanılmayan alan içerdiğini kontrol edin, ardından seçici olarak küçültme işlemi uygulayın.

Adım 1: Yüksek boş alana sahip veritabanlarını belirleyin

Ayrılmış ancak kullanılmayan alan miktarını görmek için her veritabanında aşağıdaki sorguyu çalıştırın:

USE [$DB_Name];
SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

$DB_Name ifadesini hedef veritabanı adıyla değiştirin.

Adım 2: Veritabanını veya belirli bir dosyayı küçültün

Tüm bir veritabanını küçültmek için:

DBCC SHRINKDATABASE([$DB_Name]);

Tek bir dosyayı küçültmek için:

DBCC SHRINKFILE(file_id, [$Size]);

$Size ifadesini küçültmeden sonraki hedef boyutla (küçültülecek miktar değil) MB cinsinden değiştirin.

Yüksek geçici dosya kullanımını çözün

Nedeni teşhis edin

Örnek izleme sekmesinde geçici dosya tüketimini kontrol edin. tempdb'de alan azaldığında ilgili hata da hata günlüğüne kaydedilir.

Ayrıntılı sorun giderme kılavuzu için Microsoft belgelerindeki tempdb'de yetersiz disk alanı sorunlarını giderme bölümüne bakın.

Çözüm

  • Geçici dosya alanını hemen serbest bırakmak için örneği yeniden başlatın.

  • tempdb'nin gereksiz yere büyümesini önlemek için uygulama kodunda geçici tabloları, satır sürümlerini ve tablo değişkenlerini zamanında serbest bırakın.

Uygulama kapsamı

ApsaraDB RDS for SQL Server