Bir RDS for SQL Server örneğinde depolama alanının tükenmesi, yazma işlemlerinin başarısız olmasına ve yedeklemelerin tamamlanamamasına neden olabilir. Bu konuda, hangi dosya türünün alan tükettiğinin nasıl belirleneceği ve depolama alanının nasıl geri kazanılacağı veya genişletileceği açıklanmaktadır.
Depolama alanı kavramlarını anlama
Sorun gidermeye başlamadan önce, alan sayılarının ne anlama geldiğini netleştirin:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Konsol ölçümleri ve çoğu izleme API'si, gerçek veri kullanımını değil dosya boyutunu (ayrılan) bildirir. Her iki değeri de aynı anda görmek için sys.dm_db_file_space_usage veya sys.master_files sorgulayın. Bu ayrım, küçültme işleminin anlamlı bir alan boşaltıp boşaltmayacağını belirler.
Alan kullanımını görüntüleme
Mevcut alan kullanımını kontrol etmek için aşağıdaki yöntemlerden herhangi birini kullanın:
-
Yöntem 1 — Temel Bilgiler sayfası: Yalnızca toplam mevcut alan kullanımını gösterir. Dosya türüne göre döküm veya geçmiş eğilimler sunulmaz.

-
Yöntem 2 — İzleme ve Uyarılar > Standart İzleme: Disk alanını dosya türüne (veri, günlük, temp, diğer) göre ayrılmış olarak ve geçmiş eğilimlerle birlikte gösterir. Ölçüm tanımları için bkz. Standart izlemeyi görüntüleme.

-
Yöntem 3 — Otonomi Hizmetleri > Depolama Yönetimi: Veri ile günlük kullanımı, geçmiş eğilimler ve en çok alan kullanan veritabanları ve tablolar için alan tahsisi dahil olmak üzere ayrıntılı bir döküm sağlar. Daha fazla bilgi için bkz. Alan Yönetimi.
Depolama Yönetimi, cloud disklerle çalışan SQL Server 2008 R2 örnekleri için kullanılamaz.

Yöntem 4 — SQL Server Management Studio (SSMS) veya başka bir istemci aracı: Örnek doğrudan bağlanın ve T-SQL sorgularını çalıştırın. Bağlantı talimatları için bkz. SSMS istemcisi kullanarak bir RDS for SQL Server örneğine bağlanma.
Alan kullanımını incelemek için yaygın olarak kullanılan aşağıdaki T-SQL komutlarını kullanabilirsiniz:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alan kullanımı yüksekse, RDS konsolu içindeki Monitoring and Alerts bölümüne gidin ve hangi dosya türünün (veri, günlük, temp veya diğer) en hızlı büyüdüğünü kontrol edin. Ardından aşağıdaki ilgili bölümleri izleyin.
Veri alanını geri kazanma
Neden analizi
tempdb veritabanı, SQL Server'da geçici verileri depolayan bir sistem veritabanıdır. tempdb içindeki veri dosyası alanı, aşağıdakiler gibi birçok senaryoda sıklıkla kullanılır:
Kullanıcı nesneleri: Kullanıcılar tarafından oluşturulan geçici tablolar.
Dahili nesneler: SQL Server tarafından dahili olarak oluşturulan geçici tablolar.
Sürüm deposu: Bir veritabanı için anlık görüntü izolasyonu veya read committed snapshot etkinleştirildiğinde, sürüm oluşturma bilgileri
tempdbiçinde depolanır.
Uzun süren işlemler, çok sayıda geçici tablo oluşturulması veya anlık görüntü izolasyonu gibi belirli işlemler büyük miktarda alan kullanırsa veri dosyası şişebilir. Bu durum, dosya boyutunun normal aralığının çok ötesine büyümesi anlamına gelir. Daha fazla bilgi için bkz. tempdb veritabanı için resmi Microsoft öğreticisi.
Çözümler
Bir RDS for SQL Server veritabanı veri dosyaları ve günlük dosyaları içerir. Her biri için alanı geri kazanma yöntemleri aşağıdaki gibidir:
Veri dosyası alanını geri kazanma
tempdb için veri dosyası alanı büyük ölçüde büyürse, SHRINKFILE komutunu kullanarak bunu küçültmek pek etkili olmaz. Bunun yerine, resmi Microsoft öğreticisinde (tempdb veritabanını küçültme) açıklandığı gibi, yoğun olmayan saatlerde örneği yeniden başlatarak tempdb alanını serbest bırakabilirsiniz.
tempdb veri dosyalarının alan kullanımını analiz etmek için aşağıdaki çözümleri kullanabilirsiniz:
Günlük dosyası alanını geri kazanma
tempdb için günlük dosyası alanı büyürse, bu genellikle uzun süren bir işlemin günlüğün kesilmesini engellemesinden kaynaklanır. Alanı aşağıdaki gibi geri kazanabilirsiniz:
sys.databaseiçindekilog_reuse_wait_descalanında günlük yeniden kullanım bekleme türünü kontrol edin. Günlük yeniden kullanım bekleme türüACTIVE_TRANSACTIONise, uzun süren bir işlem vardır.tempdbveritabanında hangi uzun süren işlemlerin çalıştığını belirleyin. Uzun süren işlemleri sonlandırdıktan sonra, günlük dosyasını küçültmek içinSHRINKFILEkullanabilirsiniz.
tempdb günlük dosyalarının alan kullanımını analiz etmek için aşağıdaki çözümleri kullanabilirsiniz:
-
İlk olarak, veritabanı günlük dosyasının durumunu kontrol edin.
Çalıştırma sonuçlarında, tempdb günlük alanı durumunu kontrol edin.
LogReuseWaitDescriptiondeğeriNOTHINGise, günlük dosyasını doğrudanSHRINKFILEile küçültebilirsiniz. DeğerNOTHINGdeğilse (örneğin, yaygın olanACTIVE_TRANSACTIONdeğeri), etkin uzun süren bir işlem vardır. Günlük dosyasınıSHRINKFILEile küçültmeden önce uzun süren işlemi sonlandırmanız gerekir.SELECT name AS [DatabaseName], recovery_model_desc AS [RecoveryModel], log_reuse_wait_desc AS [LogReuseWaitDescription] FROM sys.databases;
-
Tempdb günlük dosyası büyümesi genellikle etkin uzun süren işlemlerden kaynaklanır. Tempdb veritabanındaki en uzun süren işlemi kontrol etmek ve sonlandırıp sonlandırmamaya karar vermek için aşağıdaki SQL komutunu kullanabilirsiniz:
USE tempdb; GO DBCC OPENTRAN; GOAşağıdaki şekilde gösterildiği gibi, oturum kimliğine (SPID) ve işlem başlangıç zamanına (Start time) dikkat edin:

-
Ardından, oturumun ne yaptığını ve durumunu kontrol edebilirsiniz. Önceki adımdaki oturum kimliğini kullanabilirsiniz:
SELECT * FROM sys.sysprocesses WHERE spid = xxx;--spid is the SPID from the previous stepÖrneğin:

-
Oturum durumu
sleepingise, yürütülen ifadeyi kontrol etmek için aşağıdaki SQL komutunu kullanabilirsiniz:DBCC INPUTBUFFER(xxx); --xxx is the session ID (spid) from the previous stepAşağıdaki şekilde bir örnek gösterilmektedir.

Veri alanı nasıl çalışır
Toplam veri alanı, tüm veri dosyası boyutlarının toplamına eşittir ve iki bölüme ayrılır:
Ayrılan alan: Tablolara veya dizinlere atanmış alan. Hem veri içeren satırları hem de aynı tablo veya dizine gelecekteki eklemeler için ayrılmış sayfaları içerir. Diğer nesneler bu alanı doğrudan kullanamaz.
Ayrılmamış alan: Herhangi bir nesneyle ilişkilendirilmemiş tamamen boş genişletmeler (her genişletme 64 KB'lık bitişik alandır). Bir dosyayı küçültmek, bu alanı işletim sistemine geri bırakır.
Veriler hala büyüyorsa, ayrılmamış alan genellikle küçüktür. Dosyaları doğrudan küçültmenin etkisi azdır. Önce ayrılan alanı geri kazanın, ardından küçültmeyi düşünün.
Ayrılan alanı geri kazanma
Verileri arşivleme veya silme
Eski geçmiş kayıtlar gibi nadiren erişilen verileri başka bir örneğe veya arşiv formatına silin veya taşıyın. Bu işlem, kullanılan veri alanını doğrudan azaltır ve en etkili uzun vadeli çözümdür, ancak uygulama mantığında ve veritabanı tasarımında değişiklikler gerektirir.
Verileri sıkıştırma
SQL Server 2016 veya sonraki sürümleri çalıştıran örnekler ve daha eski sürümleri çalıştıran Enterprise Edition örnekleri, tablo, dizin veya bölüm düzeyinde satır ve sayfa sıkıştırmayı destekler. Ayrıntılar için bkz. Veri sıkıştırma.
Tasarruflar şemaya, sütun türlerine ve veri dağılımına bağlı olarak büyük ölçüde değişir (%10–%90). Sıkıştırmayı etkinleştirmeden önce tasarrufları tahmin etmek için sp_estimate_data_compression_savings kullanın.
Sıkıştırma ayarlarını değiştirmek bir Veri Tanımlama Dili (DDL) işlemidir. Büyük tablolarda bu işlem, uzun süren tablo kilitlemelerine neden olabilir. Yoğun olmayan saatlerde çalıştırın.
Enterprise Edition örneklerinde, iş etkisini en aza indirmek için ONLINE = ON ayarlayın.
Sıkıştırma CPU yükünü artırır. Yalnızca alan tasarrufunun maliyeti haklı çıkardığı büyük tablolarda etkinleştirin.
Dizini parçalama giderme
Yüksek dizin parçalanması sorguları yavaşlatır ve depolamayı boşa harcar. Parçalanma oranlarını görüntülemek için Autonomy Services > Performance Optimization bölümüne gidin ve Index Usage sekmesine tıklayın. Konsol, her tablo için parçalanma oranını gösterir ve her dizini yeniden oluşturup yeniden düzenlemeniz gerekip gerekmediğini önerir.
Dizin parçalanma oranı, mantıksal olarak bitişik olan dizin sayfalarının fiziksel olarak bitişik olmama yüzdesini ölçer. Bu, sayfalar içindeki boş alan yüzdesinden farklıdır. Sayfa başına ortalama boş alanı ölçmek içinsys.dm_db_index_physical_statsöğesiniSAMPLEDveyaDETAILEDmodunda sorgulayın veavg_page_space_used_in_percentsütununu kontrol edin. Ayrıntılar için bkz. sys.dm_db_index_physical_stats (Transact-SQL) . Bu sorgu birçok dizin sayfasını okur; yoğun olmayan saatlerde çalıştırın.
Dizini yeniden oluşturma (REBUILD): Dizini tamamen yeniden oluşturur. Yüksek parçalanmaya sahip dizinler için yeniden düzenlemeden daha etkilidir. Varsayılan olarak, işlem sırasında tabloyu kilitler. Enterprise Edition örneklerinde, uzun tablo kilitlerinden kaçınmak için ONLINE = ON ayarlayın.
Yeniden oluşturma işlemi, veritabanı depolamasını ve günlük boyutunu geçici olarak önemli ölçüde artırır. Yeniden oluşturmadan önce, örnekte yeniden oluşturulan dizinin boyutunun en az iki katı kadar boş depolama alanı olduğundan emin olun.
Boş alanı kontrol edin: örneğin Basic Information sayfasına gidin ve Instance Resources bölümüne bakın.
Boş alan yetersizse, önce depolamayı ölçeklendirin. Yeni alan, yeniden başlatma olmadan hemen etkili olur.
ALTER INDEX <IX_YourIndexName> ON <YourTableName> REBUILD WITH (ONLINE = ON);
Yeniden oluşturma işleminden sonra konsol dizin istatistiklerini eşzamansız olarak günceller. En son verileri almak için Recollect düğmesine tıklayın, ardından parçalanma oranını doğrulamak için Export Script düğmesine tıklayarak betiği indirin.

Dizini yeniden düzenleme (REORGANIZE): Tabloyu kilitlemeden yaprak düzeyi sayfaları yeniden yapılandırır. Yeniden oluşturmaya göre daha az etkilidir, ancak düşük parçalanmaya sahip dizinler için uygundur.
Veri dosyalarını küçültme
Yukarıdaki yöntemleri kullanarak ayrılan alanı geri kazandıktan sonra, depolama baskısı devam ediyorsa aşağıdaki yaklaşımlardan birini kullanın.
Tek seferde büyük ölçekli bir küçültme işlemi, önemli ölçüde işlem günlüğü büyümesine ve uzun süreli engellemeye neden olabilir. Küçük partiler halinde küçültmek için Yöntem 1'i kullanın.
Yöntem 1 — Artımlı küçültme döngüsü (önerilen)
Her seferinde yaklaşık 5 GB'lık yinelemelerle küçültme yapın. Aşağıdaki betik SQL Server 2012 ve sonraki sürümler için geçerlidir:
-- This script applies only to SQL Server 2012 and later versions. Specify the following parameters before running.
DECLARE @dbName NVARCHAR(128) = 'YourDBName' -- Database name
DECLARE @fileName NVARCHAR(128) -- Data file name
DECLARE @targetSize INT = 2000 -- Target size (MB)
DECLARE @shrinkSize INT = 5120 -- Size to shrink per iteration (MB). 5 GB recommended.
DECLARE @currentSize INT -- Current file size
DECLARE @freeSize INT -- Unallocated space
DECLARE @usedSize INT -- Used space
DECLARE @sql NVARCHAR(500)
DECLARE @waitTime INT = 10 -- Wait between iterations (seconds)
-- Get the data file name
SELECT @fileName = name
FROM sys.master_files
WHERE database_id = DB_ID(@dbName)
AND type_desc = 'ROWS'
-- Shrink in a loop
WHILE 1 = 1
BEGIN
-- Get current size and space breakdown
DECLARE @sql0 NVARCHAR(MAX) = N'
USE [' + @dbName + '];
SELECT
@currentSize = (SUM(total_page_count) * 1.0 / 128),
@freesize = (SUM(unallocated_extent_page_count) * 1.0 / 128)
FROM sys.dm_db_file_space_usage
WHERE database_id = DB_ID();'
EXEC sp_executesql
@sql0,
N'@currentSize INT OUTPUT, @freesize INT OUTPUT',
@currentSize OUTPUT,
@freesize OUTPUT
PRINT 'Current size:' + CAST(@currentSize AS VARCHAR(10)) + 'MB'
PRINT 'Free size:' + CAST(@freeSize AS VARCHAR(10)) + 'MB'
SET @usedSize = @currentSize - @freeSize
PRINT 'Used size:' + CAST(@usedSize AS VARCHAR(10)) + 'MB'
-- Validate target size
IF @targetSize <= @usedSize
BEGIN
PRINT 'The target size is too small. Specify a new size. The target size cannot be smaller than: ' + CAST(@usedSize AS VARCHAR(20)) + 'MB'
BREAK
END
-- Exit when target is reached
IF @currentSize <= @targetSize
BEGIN
PRINT 'Shrink completed. Current size: ' + CAST(@currentSize AS VARCHAR(20)) + 'MB'
BREAK
END
-- Calculate the new size for this iteration
DECLARE @newSize INT = @currentSize - @shrinkSize
IF @newSize < @targetSize
SET @newSize = @targetSize
-- Run the shrink
SET @sql = 'USE [' + @dbName + '];DBCC SHRINKFILE (N''' + @fileName + ''', ' + CAST(@newSize AS VARCHAR(20)) + ')'
PRINT 'Executing shrink: ' + @sql
EXEC (@sql)
-- Wait before the next iteration
PRINT 'Waiting ' + CAST(@waitTime AS VARCHAR(10)) + ' seconds to continue...'
WAITFOR DELAY '00:00:10'
END
Yöntem 2 — Doğrudan DBCC SHRINKFILE
Tek bir veri dosyasını hedef boyuta küçültmek için DBCC SHRINKFILE çalıştırın. Bu işlem, ayrılmamış alanı işletim sistemine geri bırakır. Referans için bkz. Veritabanını küçültme ve DBCC SHRINKFILE.
DBCC SHRINKFILE(<File ID>, <Target size in MB>)
Yaygın veri alanı sorunlarını giderme
Günlük alanını geri kazanma
Günlük alanı kullanımını kontrol etme
Her veritabanının günlük dosyasındaki kullanılan alan yüzdesini kontrol etmek için DBCC SQLPERF(LOGSPACE) veya Monitoring and Alerts sayfasını kullanın.
Kullanılan yüzde yüksekse, günlük dosyasını küçültmenin etkisi az olacaktır. Engelleme koşulu çözülene kadar günlük kesilemez. Kesmenin neden beklediğini belirlemek için sys.databases sorgulayın ve log_reuse_wait_desc sütununu kontrol edin:
SELECT name, log_reuse_wait, log_reuse_wait_desc FROM sys.databases;
log_reuse_wait_desc değerlerinin tam listesi için bkz. sys.databases (Transact-SQL).
İşlem günlüklerini küçültme
İşlem günlüğü doluysa, konsoldan küçültemezsiniz. Risk taşıyan SQL'i manuel olarak çalıştırmanız gerekir. Mümkün olduğunda önce disk depolamasını ölçeklendirin. Acil durum prosedürleri için bkz. Yetersiz günlük alanı çözümü (yalnızca acil durum kullanımı için).
Durumunuza uygun yaklaşımı seçin:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Küçültme tamamlandıktan sonra, güncellenen günlük alanını doğrulamak için Monitoring and Alerts bölümüne gidin.

tempdb alanını geri kazanma
tempdb alanı nasıl kullanır
tempdb geçici verileri depolayan bir SQL Server sistem veritabanıdır. Üç kategori nesne onun veri dosyası alanını tüketir:
Kullanıcı nesneleri: Kullanıcı oturumları tarafından oluşturulan geçici tablolar (örneğin,
#TempTable).Dahili nesneler: SQL Server tarafından dahili olarak oluşturulan geçici yapılar (örneğin, sıralama işlemleri veya hash join'ler için).
Sürüm deposu: Anlık görüntü izolasyonu veya read committed snapshot isolation (RCSI) etkinleştirildiğinde, SQL Server satır sürümlerini
tempdbiçinde depolar. Uzun süren işlemler bu sürümlerin temizlenmesini engeller.
Bu kategorilerden herhangi biri büyük ölçüde büyürse (özellikle uzun süren işlemler, geçici tabloların yoğun kullanımı veya anlık görüntü izolasyonu yoluyla), tempdb veri dosyası normal boyutunun çok ötesine şişebilir. Arka plan bilgisi için bkz. Microsoft tempdb belgeleri.
tempdb veri dosyası alanını geri kazanma
SHRINKFILE genellikle tempdb veri dosyaları için etkisizdir. Alanı geri kazanmanın en güvenilir yolu, yoğun olmayan saatlerde örneği yeniden başlatmaktır. SQL Server, başlangıçta tempdb değerini sıfırlar. Ayrıntılar için bkz. tempdb veritabanını küçültme.
Yeniden başlatmadan önce, tekrarlamayı önlemek için büyümeye neyin neden olduğunu teşhis edin.
Senaryo 1: tempdb şu anda büyük (canlı örnek)
Adım 1 — Nesne türüne göre alanı kontrol etme
Her kategoriye (kullanıcı nesneleri, dahili nesneler, sürüm deposu) ne kadar alan tüketildiğini görmek için aşağıdaki sorguyu çalıştırın:
SELECT
SUM(version_store_reserved_page_count) AS [version store pages used],
(SUM(version_store_reserved_page_count) * 1.0 / 128) AS [version store space (MB)],
SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space (MB)],
SUM(internal_object_reserved_page_count) AS [internal object pages used],
(SUM(internal_object_reserved_page_count) * 1.0 / 128) AS [internal object space (MB)]
FROM
sys.dm_db_file_space_usage;
Referans için bkz. sys.dm_db_file_space_usage.
Adım 2a — Kullanıcı nesneleri veya dahili nesneler büyükse
En çok tempdb alanı kullanan oturumları bulun:
SELECT
session_id,
SUM(user_objects_alloc_page_count) AS [user object pages used],
(SUM(user_objects_alloc_page_count) * 1.0 / 128) AS [user object space (MB)],
SUM(internal_objects_alloc_page_count) AS [internal object pages used],
(SUM(internal_objects_alloc_page_count) * 1.0 / 128) AS [internal object space (MB)]
FROM
sys.dm_db_session_space_usage
GROUP BY
session_id;
Referans için bkz. sys.dm_db_session_space_usage.
Ardından, oturumun çalıştırdığı SQL ifadesini bulmak için session_id değerini kullanın:
SELECT
r.session_id AS [SPID],
r.start_time AS [Start Time],
r.status AS [Status],
r.command AS [Command Type],
r.wait_type AS [Wait Type],
r.wait_time AS [Wait Time (ms)],
r.last_wait_type AS [Last Wait Type],
t.text AS [Executing Statement]
FROM
sys.dm_exec_requests r
CROSS APPLY
sys.dm_exec_sql_text(r.sql_handle) t
WHERE
r.session_id = <session_id>; -- Replace with the session_id from the previous query
Adım 2b — Sürüm deposu büyükse
Veritabanında muhtemelen temizlemeyi engelleyen uzun süren işlemlerle birlikte anlık görüntü izolasyonu etkindir.
Anlık görüntü izolasyonunun hangi veritabanlarda etkin olduğunu kontrol edin:
SELECT
name,
is_read_committed_snapshot_on,
snapshot_isolation_state
FROM sys.databases;
is_read_committed_snapshot_on veya snapshot_isolation_state değeri 1 ise, anlık görüntü izolasyonu aktiftir.

Sürüm deposu temizlemesini engelleyen, taahhüt edilmemiş uzun süren işlemlere sahip oturumları bulun:
SELECT * FROM sys.dm_tran_active_snapshot_database_transactions ORDER BY elapsed_time_seconds DESC;

Oturumun ne yaptığını kontrol etmek için session_id değerini kullanın:
SELECT * FROM sys.sysprocesses WHERE spid = <session_id>;

Oturum durumu sleeping ise, son yürütülen ifadeyi kontrol edin:
DBCC INPUTBUFFER(<session_id>);

Senaryo 2: Yeniden başlatmadan sonra geçmiş tempdb büyümesini araştırma
Örnek zaten yeniden başlatıldıysa ve canlı veriler mevcut değilse, ne olduğunu yeniden yapılandırmak için Ortalama Etkin Oturumlar (AAS), yavaş sorgu günlükleri ve denetim günlüklerini kullanın.
Adım 1 — Büyüme penceresini bulma
Örnek ayrıntıları sayfasında Monitoring and Alerts > Standard Monitoring bölümüne gidin. Instance Storage bölümünde, tmp_size ölçümünün yükselmeye başladığı ve durduğu zamanları not edin. tempdb öncelikle mevcut boş alanı yeniden kullanabilir; gerçek dosya genişletmesi yalnızca mevcut alan tükendiğinde gerçekleşir, bu nedenle grafikteki büyüme SQL işleminin başlangıcından gecikebilir.

Adım 2 — AAS kullanarak analiz etme
Autonomy Services > Performance Optimization > Performance Insight bölümüne gidin. İlgili tüm işlemleri yakalamak için başlangıç zamanını daha önceye uzatarak zaman penceresini seçin. Disk tabanlı geçici tabloları yoğun kullanan SQL ifadelerini arayın (örneğin, # tablolarının sık oluşturulması).

Adım 3 — Yavaş sorgu günlüklerini anahtar kelimeye göre filtreleme
Autonomy Services > Slow Query Logs bölümüne gidin. Anahtar kelimeye göre arama yapın (örneğin, bir geçici tablo adı). Sorgu başlangıç zamanlarını ve sürelerini kontrol ederek sorgu bitiş zamanının tempdb büyümeyi durdurduğu zamanla hizalanıp hizalanmadığını görün.

tempdb günlük dosyası alanını geri kazanma
Uzun süren bir işlem günlük kesilmesini engellediğinde tempdb günlük dosyaları büyür.
-
sys.databasesiçindekilog_reuse_wait_descdeğerini kontrol edin:SELECT name AS [DatabaseName], recovery_model_desc AS [RecoveryModel], log_reuse_wait_desc AS [LogReuseWaitDescription] FROM sys.databases;LogReuseWaitDescriptiondeğeriNOTHINGise, günlük dosyasını doğrudanSHRINKFILEile küçültün.ACTIVE_TRANSACTIONgösteriyorsa, önce etkin uzun süren işlemi sonlandırın.
-
tempdbiçindeki en uzun süren işlemi bulun:USE tempdb; GO DBCC OPENTRAN; GOOturum kimliğini (SPID) ve işlem başlangıç zamanını not edin.

-
Oturumun ne yaptığını kontrol edin:
SELECT * FROM sys.sysprocesses WHERE spid = <spid>;
-
Oturum durumu
sleepingise, son yürütülen ifadesini kontrol edin:DBCC INPUTBUFFER(<session_id>);
Engelleyen işlemi sonlandırdıktan sonra tempdb günlük dosyasını küçültün:
USE tempdb;
DBCC SHRINKFILE(templog, 1);
GO
Diğer dosya alanını geri kazanma
Diğer dosya alanı neleri içerir
Diğer dosya alanı sistem veritabanı dosyalarını kapsar: sqlserver.other_size, mastersize, modelsize ve msdbsize. Bunlar genellikle küçüktür, ancak iki senaryoda beklenmedik şekilde büyüyebilir:
Hata günlükleri: Örnek çok sayıda hata olayı oluşturursa
errorlogdosyası birkaç gigabayt veya daha fazla büyüyebilir.Bellek döküm dosyaları: SQL Server, kritik özel durumlar sırasında otomatik olarak bellek dökümleri oluşturur.
Boyutu aşırı büyük dosyaları belirleme ve temizleme
-
Monitoring and Alerts > Standard Monitoring bölümüne gidin ve bu dosya türleri tarafından kullanılan alanı kontrol edin. Ölçüm tanımları için bkz. Standart izlemeyi görüntüleme.

errorlogbüyük miktarda alan tüketiyorsa, hata günlüklerini temizlemek için Logs sayfasına gidin. Talimatlar için bkz. Günlükleri yönetme.
Diğer sistem dosyaları (örneğin sqlserver.other_size ) beklenmedik şekilde büyükse, kök nedeni belirlemek için teknik destekle iletişime geçin.
Depolama alanını ölçeklendirme
Yukarıdaki adımları uyguladıktan sonra alan kullanımı hala yüksekse, örneğin depolama kapasitesini ölçeklendirin. Talimatlar için bkz. Örnek teknik özelliklerini değiştirme. Yeni depolama alanı, örnek yeniden başlatılmadan hemen etkili olur.




