Aracılığıyla paylaş


sp_spaceused (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

sp_spaceused Sistem saklı yordamı aşağıdakilerden birini görüntüler:

  • geçerli veritabanındaki tablo, dizinli görünüm veya Hizmet Aracısı kuyruğu tarafından kullanılan satır sayısı, ayrılmış disk alanı ve disk alanı

  • ayrılmış ve tüm veritabanı tarafından kullanılan disk alanı

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_spaceused
    [ [ @objname = ] N'objname' ]
    [ , [ @updateusage = ] 'updateusage' ]
    [ , [ @mode = ] 'mode' ]
    [ , [ @oneresultset = ] oneresultset ]
    [ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]

Uyarı

Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Tartışmalar

Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) sp_spaceused için, parametrelerin sıralı konumuna güvenmek yerine adlandırılmış parametreleri (örneğin sp_spaceused (@objname= N'Table1');) belirtmelidir.

[ @objname = ] N'objname'

Alan kullanımı bilgilerinin istendiği tablonun, dizinli görünümün veya kuyruğun nitelenmiş veya nitelenmemiş adı. @objname , varsayılan değeri nvarchar(776) şeklindedir NULL. Tırnak işaretleri yalnızca bir nitelenmiş nesne adı belirtilmişse gereklidir. Tam nesne adı (veritabanı adı dahil) sağlanmışsa, veritabanı adı geçerli veritabanının adı olmalıdır.

@objname belirtilmezse, tüm veritabanı için sonuçlar döndürülür.

Uyarı

Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) yalnızca veritabanı ve tablo nesnelerini destekler.

[ @updateusage = ] 'updateusage'

Alan kullanım bilgilerini güncelleştirmek için çalıştırılması gerektiğini belirtir DBCC UPDATEUSAGE . @updateusage , varsayılan değeri olan varchar(5)'dir false. @objname belirtilmediğinde deyimi tüm veritabanında çalıştırılır. Aksi takdirde, deyimi @objname üzerinde çalıştırılır. Değerler true veya false olabilir.

[ @mode = ] 'mode'

Sonuçların kapsamını gösterir. Esnetilmiş tablo veya veritabanı için @mode parametresi nesnenin uzak bölümünü eklemenize veya dışlamanıza olanak tanır. Daha fazla bilgi için bkz. Stretch Database.

Önemli

Stretch Database, SQL Server 2022 (16.x) ve Azure SQL Veritabanı'nda kullanım dışıdır. Bu özellik, Veritabanı Altyapısı'nın gelecekteki bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.

@modevarchar(11) şeklindedir ve bu değerlerden biri olabilir.

Değer Açıklama
ALL (varsayılan) Hem yerel bölüm hem de uzak bölüm dahil olmak üzere nesnenin veya veritabanının depolama istatistiklerini döndürür.
LOCAL_ONLY Nesnenin veya veritabanının yalnızca yerel bölümünün depolama istatistiklerini döndürür. Nesne veya veritabanı Esnetme etkin değilse, @modeALLile aynı istatistikleri döndürür.
REMOTE_ONLY Nesnenin veya veritabanının yalnızca uzak bölümünün depolama istatistiklerini döndürür. Bu seçenek, aşağıdaki koşullardan biri doğru olduğunda bir hata oluşturur:

Tablo Stretch için etkinleştirilmemiş.

Tablo Esnetme için etkinleştirildi, ancak veri geçişini hiçbir zaman etkinleştirmediniz. Bu durumda, uzak tablonun henüz bir şeması yoktur.

Kullanıcı uzak tabloyu el ile bıraktı.

Uzak veri arşivinin sağlanması Başarılı durumunu döndürdü, ancak aslında başarısız oldu.

[ @oneresultset = ] oneresultset

Tek bir sonuç kümesinin döndürülip döndürülmeyeceğini gösterir. @oneresultsetbittir ve şu değerlerden biri olabilir:

Değer Açıklama
0 (varsayılan) @objname null olduğunda veya belirtilmediğinde iki sonuç kümesi döndürülür.
1 @objname belirtildiğinde NULL veya belirtilmediğinde tek bir sonuç kümesi döndürülür.

[ @include_total_xtp_storage = ] include_total_xtp_storage

Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri ile SQL Veritabanı

@oneresultset olarak ayarlandığında1, bu parametre tek sonuç kümesinin depolama için MEMORY_OPTIMIZED_DATA sütunlar içerip içermediğini belirler. @include_total_xtp_storagebittir ve varsayılan değeridir 0. ise 1, XTP sütunları sonuç kümesine eklenir.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Sonuç kümesi

@objname atlanırsa ve @oneresultset değeri ise0, geçerli veritabanı boyutu bilgilerini sağlamak için aşağıdaki sonuç kümeleri döndürülür.

Sütun adı Veri türü Açıklama
database_name nvarchar(128) Geçerli veritabanının adı.
database_size varchar(18) Geçerli veritabanının megabayt cinsinden boyutu. database_size hem veri hem de günlük dosyalarını içerir.
unallocated space varchar(18) Veritabanında veritabanı nesneleri için ayrılmamış alan.
Sütun adı Veri türü Açıklama
reserved varchar(18) Veritabanındaki nesneler tarafından ayrılan toplam alan miktarı.
data varchar(18) Veriler tarafından kullanılan toplam alan miktarı.
index_size varchar(18) Dizinler tarafından kullanılan toplam alan miktarı.
unused varchar(18) Veritabanındaki nesneler için ayrılan ancak henüz kullanılmayan toplam alan miktarı.

@objname atlanırsa ve @oneresultset değeri ise1, geçerli veritabanı boyutu bilgilerini sağlamak için aşağıdaki tek sonuç kümesi döndürülür.

Sütun adı Veri türü Açıklama
database_name nvarchar(128) Geçerli veritabanının adı.
database_size varchar(18) Geçerli veritabanının megabayt cinsinden boyutu. database_size hem veri hem de günlük dosyalarını içerir.
unallocated space varchar(18) Veritabanında veritabanı nesneleri için ayrılmamış alan.
reserved varchar(18) Veritabanındaki nesneler tarafından ayrılan toplam alan miktarı.
data varchar(18) Veriler tarafından kullanılan toplam alan miktarı.
index_size varchar(18) Dizinler tarafından kullanılan toplam alan miktarı.
unused varchar(18) Veritabanındaki nesneler için ayrılan ancak henüz kullanılmayan toplam alan miktarı.

@objname belirtilirse, belirtilen nesne için aşağıdaki sonuç kümesi döndürülür.

Sütun adı Veri türü Açıklama
name nvarchar(128) Alan kullanımı bilgilerinin istendiği nesnenin adı.

Nesnenin şema adı döndürülmüyor. Şema adı gerekiyorsa, eşdeğer boyut bilgilerini almak için sys.dm_db_partition_stats veya sys.dm_db_index_physical_stats dinamik yönetim görünümlerini kullanın.
rows char(20) Tabloda var olan satır sayısı. Belirtilen nesne bir Hizmet Aracısı kuyruğuysa, bu sütun kuyruktaki iletilerin sayısını gösterir.
reserved varchar(18) @objname için toplam ayrılmış alan miktarı.
data varchar(18) @objname verileri tarafından kullanılan toplam alan miktarı.
index_size varchar(18) @objname dizinler tarafından kullanılan toplam alan miktarı.
unused varchar(18) @objname için ayrılan ancak henüz kullanılmayan toplam alan miktarı.

Parametre belirtilmediğinde bu mod varsayılandır. Aşağıdaki sonuç kümeleri, disk üzerindeki veritabanı boyutu bilgilerini ayrıntılı olarak inceleyerek döndürülür.

Sütun adı Veri türü Açıklama
database_name nvarchar(128) Geçerli veritabanının adı.
database_size varchar(18) Geçerli veritabanının megabayt cinsinden boyutu. database_size hem veri hem de günlük dosyalarını içerir. Veritabanında bir MEMORY_OPTIMIZED_DATA dosya grubu varsa, bu değer dosya grubundaki tüm denetim noktası dosyalarının toplam disk içi boyutunu içerir.
unallocated space varchar(18) Veritabanında veritabanı nesneleri için ayrılmamış alan. Veritabanında bir MEMORY_OPTIMIZED_DATA dosya grubu varsa, bu değer dosya grubunda durum PRECREATED bilgisi olan denetim noktası dosyalarının toplam disk içi boyutunu içerir.

Veritabanındaki tablolar tarafından kullanılan alan. Disk kullanımı tablo başına hesaplama olmadığından bu sonuç kümesi bellek için iyileştirilmiş tabloları yansıtmaz:

Sütun adı Veri türü Açıklama
reserved varchar(18) Veritabanındaki nesneler tarafından ayrılan toplam alan miktarı.
data varchar(18) Veriler tarafından kullanılan toplam alan miktarı.
index_size varchar(18) Dizinler tarafından kullanılan toplam alan miktarı.
unused varchar(18) Veritabanındaki nesneler için ayrılan ancak henüz kullanılmayan toplam alan miktarı.

Aşağıdaki sonuç kümesi yalnızca veritabanında en az bir kapsayıcısı olan bir MEMORY_OPTIMIZED_DATA dosya grubu varsa döndürülür:

Sütun adı Veri türü Açıklama
xtp_precreated varchar(18) Durumu PRECREATEDkb olan denetim noktası dosyalarının toplam boyutu. Veritabanındaki ayrılmamış alanı bir bütün olarak sayar. Örneğin, önceden oluşturulmuş 600.000 KB denetim noktası dosyası varsa, bu sütun içerir 600000 KB.
xtp_used varchar(18) , ve MERGE TARGETdurumlarının UNDER CONSTRUCTIONACTIVEKB cinsinden olduğu denetim noktası dosyalarının toplam boyutu. Bu değer, bellek için iyileştirilmiş tablolardaki veriler için etkin olarak kullanılan disk alanıdır.
xtp_pending_truncation varchar(18) Durumu WAITING_FOR_LOG_TRUNCATIONkb olan denetim noktası dosyalarının toplam boyutu. Bu değer, günlük kesilmesi gerçekleştiğinde temizlemeyi bekleyen denetim noktası dosyaları için kullanılan disk alanıdır.

@objname atlanırsa, @oneresultset değeri olur 1ve @include_total_xtp_storage ise 1geçerli veritabanı boyutu bilgilerini sağlamak için aşağıdaki tek sonuç kümesi döndürülür. @include_total_xtp_storage (varsayılan) ise 0 , son üç sütun atlanır.

Sütun adı Veri türü Açıklama
database_name nvarchar(128) Geçerli veritabanının adı.
database_size varchar(18) Geçerli veritabanının megabayt cinsinden boyutu. database_size hem veri hem de günlük dosyalarını içerir. Veritabanında bir MEMORY_OPTIMIZED_DATA dosya grubu varsa, bu değer dosya grubundaki tüm denetim noktası dosyalarının toplam disk içi boyutunu içerir.
unallocated space varchar(18) Veritabanında veritabanı nesneleri için ayrılmamış alan. Veritabanında bir MEMORY_OPTIMIZED_DATA dosya grubu varsa, bu değer dosya grubunda durum PRECREATED bilgisi olan denetim noktası dosyalarının toplam disk içi boyutunu içerir.
reserved varchar(18) Veritabanındaki nesneler tarafından ayrılan toplam alan miktarı.
data varchar(18) Veriler tarafından kullanılan toplam alan miktarı.
index_size varchar(18) Dizinler tarafından kullanılan toplam alan miktarı.
unused varchar(18) Veritabanındaki nesneler için ayrılan ancak henüz kullanılmayan toplam alan miktarı.
xtp_precreated 1 varchar(18) Durumu PRECREATEDkb olan denetim noktası dosyalarının toplam boyutu. Bu değer, veritabanındaki ayrılmamış alana bir bütün olarak sayılır. Veritabanında en az bir kapsayıcısı olan bir MEMORY_OPTIMIZED_DATA dosya grubu yoksa döndürürNULL.
xtp_used 1 varchar(18) , ve MERGE TARGETdurumlarının UNDER CONSTRUCTIONACTIVEKB cinsinden olduğu denetim noktası dosyalarının toplam boyutu. Bu değer, bellek için iyileştirilmiş tablolardaki veriler için etkin olarak kullanılan disk alanıdır. Veritabanında en az bir kapsayıcısı olan bir MEMORY_OPTIMIZED_DATA dosya grubu yoksa döndürürNULL.
xtp_pending_truncation 1 varchar(18) Durumu WAITING_FOR_LOG_TRUNCATIONkb olan denetim noktası dosyalarının toplam boyutu. Bu değer, günlük kesilmesi gerçekleştiğinde temizlemeyi bekleyen denetim noktası dosyaları için kullanılan disk alanıdır. Veritabanında en az bir kapsayıcısı olan bir MEMORY_OPTIMIZED_DATA dosya grubu yoksa döndürürNULL.

1 Yalnızca @include_total_xtp_storage olarak ayarlandıysa 1eklenir.

Açıklamalar

database_size Günlük dosyalarının boyutunu içerdiğinden değer genellikle değerinden reservedunallocated space + büyüktür, ancak reservedunallocated_space yalnızca veri sayfalarını dikkate alır. Azure Synapse Analytics ile ilgili bazı durumlarda bu deyim doğru olmayabilir.

XML dizinleri ve tam metin dizinleri tarafından kullanılan sayfalar her iki sonuç kümesi için de index_size eklenir. @objname belirtildiğinde, nesnenin XML dizinleri ve tam metin dizinleri için sayfalar da toplam reserved ve index_size sonuçlarda sayılır.

Bir veritabanı veya uzamsal dizin olan bir nesne için alan kullanımı hesaplanıyorsa, , reservedve index_sizegibi database_sizeboşluk boyutu sütunları uzamsal dizinin boyutunu içerir.

@updateusage belirtildiğinde, SQL Server Veritabanı Altyapısı veritabanındaki veri sayfalarını tarar ve her tablo tarafından kullanılan depolama alanıyla ilgili ve sys.partitions katalog görünümlerinde gerekli düzeltmeleri sys.allocation_units yapar. Örneğin, bir dizin bırakıldıktan sonra tablonun alan bilgilerinin güncel olmayabileceği bazı durumlar vardır. @updateusage büyük tablolarda veya veritabanlarında çalıştırılması biraz zaman alabilir. @updateusage yalnızca yanlış değerlerin döndürülmekte olduğundan şüpheleniyorsanız ve işlemin veritabanındaki diğer kullanıcılar veya işlemler üzerinde olumsuz bir etkisi olmadığında kullanın. Tercih edilirse, DBCC UPDATEUSAGE ayrı olarak çalıştırılabilir.

Uyarı

Büyük dizinleri bıraktığınızda veya yeniden derlediğinizde ya da büyük tabloları bıraktığınızda veya kesdiğinizde, Veritabanı Altyapısı işlem işlemeden sonraya kadar gerçek sayfa ayırmalarını ve ilişkili kilitlerini saptırıyor. Ertelenmiş bırakma işlemleri ayrılan alanı hemen serbest bırakmaz. Bu nedenle, büyük bir nesne bırakıldıktan veya kesildikten hemen sonra tarafından sp_spaceused döndürülen değerler kullanılabilir gerçek disk alanını yansıtmayabilir.

İzinler

Yürütme sp_spaceused izni genel role verilir. @updateusage parametresini yalnızca db_owner sabit veritabanı rolünün üyeleri belirtebilir.

Örnekler

A. Tablo hakkındaki disk alanı bilgilerini görüntüleme

Aşağıdaki örnek, tablo ve dizinleri için Vendor disk alanı bilgilerini raporlar.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor';
GO

B. Veritabanı hakkında güncelleştirilmiş alan bilgilerini görüntüleme

Aşağıdaki örnek, geçerli veritabanında kullanılan alanı özetler ve geçerli değerlerin döndürülmesini sağlamak için isteğe bağlı parametre @updateusage kullanır.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @updateusage = N'TRUE';
GO

C. Esnetme özellikli bir tabloyla ilişkilendirilmiş uzak tabloyla ilgili alan kullanım bilgilerini görüntüleme

Aşağıdaki örnek, uzak hedefi belirtmek için @mode bağımsız değişkenini kullanarak Esnetme özellikli bir tabloyla ilişkilendirilmiş uzak tablo tarafından kullanılan alanı özetler. Daha fazla bilgi için bkz. Stretch Database.

USE StretchedAdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';

D. Veritabanı için alan kullanım bilgilerini tek bir sonuç kümesinde görüntüleme

Aşağıdaki örnek, geçerli veritabanı için tek bir sonuç kümesindeki alan kullanımını özetler.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @oneresultset = 1;

E. Tek bir sonuç kümesinde en az bir MEMORY_OPTIMIZED dosya grubuna sahip bir veritabanı için alan kullanım bilgilerini görüntüleme

Aşağıdaki örnek, tek bir sonuç kümesinde en az bir MEMORY_OPTIMIZED dosya grubu olan geçerli veritabanı için alan kullanımını özetler.

USE WideWorldImporters;
GO

EXECUTE sp_spaceused
    @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '1',
    @include_total_xtp_storage = '1';
GO

F. Veritabanındaki MEMORY_OPTIMIZED tablo nesnesi için alan kullanım bilgilerini görüntüleme

Aşağıdaki örnek, geçerli veritabanında en az bir MEMORY_OPTIMIZED dosya grubuna sahip bir MEMORY_OPTIMIZED tablo nesnesi için alan kullanımını özetler.

USE WideWorldImporters;
GO

EXECUTE sp_spaceused
    @objname = N'VehicleTemperatures',
    @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '0',
    @include_total_xtp_storage = '1';
GO