Jika Anda menggunakan alat GUI, seperti SSMS untuk mengelola database, Anda dapat dengan mudah memeriksa ukuran database dengan mengklik GUI (klik kanan database, arahkan ke Laporan , lalu Laporan Standar, lalu klik Penggunaan Disk ).
Namun, jika Anda lebih suka menggunakan T-SQL untuk mengelola database, Anda harus menjalankan kueri yang mengembalikan informasi ini.
Artikel ini menyajikan enam cara untuk memeriksa ukuran database SQL Server menggunakan T-SQL.
Prosedur Tersimpan sp_spaceused
Ini adalah prosedur tersimpan sistem yang menampilkan jumlah baris, ruang disk yang dicadangkan, dan ruang disk yang digunakan oleh tabel, tampilan terindeks, atau antrian Pialang Layanan di database saat ini, atau menampilkan ruang disk yang dicadangkan dan digunakan oleh seluruh database.
Untuk menggunakannya, cukup beralih ke database yang relevan dan jalankan prosedurnya. Seperti ini:
USE WideWorldImporters; EXEC sp_spaceused;
Hasil:
database_name database_size unallocated space ------------------ ------------- ----------------- WideWorldImporters 3172.00 MB 2511.76 MB 1 row(s) returned reserved data index_size unused --------- --------- ---------- ------- 573688 KB 461728 KB 104120 KB 7840 KB 1 row(s) returned
Ini mengembalikan dua set hasil yang memberikan informasi yang relevan.
Anda juga dapat memberikan nama objek untuk mengembalikan data pada objek tertentu dalam database. Dalam hal ini, hanya satu kumpulan hasil yang akan dikembalikan.
Contoh:
USE WideWorldImporters; EXEC sp_spaceused N'Application.Cities';
Hasil:
name rows reserved data index_size unused ------ -------------------- -------- ------- ---------- ------ Cities 37940 4880 KB 3960 KB 896 KB 24 KB
Dalam contoh ini kami mengembalikan informasi tentang Cities
tabel saja.
Prosedur Tersimpan sp_helpdb
Prosedur penyimpanan sistem lainnya adalah sp_helpdb
.
Berikut ini contoh pemanggilan itu:
EXEC sp_helpdb N'WideWorldImporters';
Hasil:
name fileid filename filegroup size maxsize growth usage ------------ ------ ---------------- --------- ---------- ------------- -------- --------- WWI_Primary 1 /data/WWI.mdf PRIMARY 1048576 KB Unlimited 65536 KB data only WWI_Log 2 /data/WWI.ldf null 102400 KB 2147483648 KB 65536 KB log only WWI_UserData 3 /data/WWI_UD.ndf USERDATA 2097152 KB Unlimited 65536 KB data only
Dalam hal ini, kami meneruskan nama database sebagai argumen. Kami juga dapat memanggil sp_helpdb
tanpa memberikan argumen. Jika kita melakukan ini, itu akan mengembalikan informasi tentang semua database di sys.databases
tampilan katalog.
Prosedur Tersimpan sp_databases
Opsi lainnya adalah sp_databases
prosedur tersimpan sistem. Prosedur tersimpan ini mencantumkan database yang berada di instance SQL Server atau dapat diakses melalui gateway database.
Berikut cara menjalankannya:
EXEC sp_databases;
Hasil:
DATABASE_NAME DATABASE_SIZE REMARKS ------------------ ------------- ------- master 6848 null model 16384 null msdb 15616 null Music 16384 null Nature 16384 null Solutions 47104 null tempdb 16384 null Test 16384 null WideWorldImporters 3248128 null world 16384 null WorldData 16384 null
Tampilan sys.master_files
Prosedur tersimpan di atas menanyakan sys.master_files
melihat. Jadi alternatifnya adalah langsung ke tampilan dan pilih kolom Anda:
SELECT name, size, size * 8/1024 'Size (MB)', max_size FROM sys.master_files WHERE DB_NAME(database_id) = 'WideWorldImporters';
Hasil:
name size Size (MB) max_size ------------ ------ --------- --------- WWI_Primary 131072 1024 -1 WWI_Log 12800 100 268435456 WWI_UserData 262144 2048 -1
Dalam hal ini kita dapat melihat ukuran setiap file data dan file log, karena terdaftar secara terpisah. Anda juga akan melihat bahwa saya melakukan perhitungan pada size
kolom untuk mengubah nilai menjadi megabyte (MB).
Tampilan sys.database_files
Ada juga tampilan sistem yang disebut sys.database_files
. Kita dapat menggunakan tampilan ini untuk mengembalikan info yang sama seperti contoh sebelumnya:
USE WideWorldImporters; SELECT name, size, size * 8/1024 'Size (MB)', max_size FROM sys.database_files;
Hasil:
name size Size (MB) max_size ------------ ------ --------- --------- WWI_Primary 131072 1024 -1 WWI_Log 12800 100 268435456 WWI_UserData 262144 2048 -1
Gunakan Fungsi Jendela
Salah satu masalah potensial dengan dua contoh sebelumnya adalah bahwa mereka mencantumkan ukuran setiap file secara terpisah. Hal ini dapat dilihat sebagai positif atau negatif tergantung pada apa yang ingin Anda capai.
Dapat juga dikatakan bahwa tiga solusi pertama pada halaman ini bermasalah, karena mereka hanya memberikan jumlah total semua file – mereka tidak mencantumkan setiap file individual beserta ukurannya.
Jadi bagaimana jika Anda ingin melihat ukuran masing-masing file, dan total semua file untuk setiap database?
Anda dapat menggunakan OVER
klausa untuk melakukan hal itu.
Ini contohnya:
SELECT d.name AS 'Database', m.name AS 'File', m.size, m.size * 8/1024 'Size (MB)', SUM(m.size * 8/1024) OVER (PARTITION BY d.name) AS 'Database Total', m.max_size FROM sys.master_files m INNER JOIN sys.databases d ON d.database_id = m.database_id;
Hasil:
Database File Size (MB) Database Total ------------------ --------------- --------- -------------- master master 4 6 master mastlog 2 6 model modeldev 8 16 model modellog 8 16 msdb MSDBData 14 14 msdb MSDBLog 0 14 Music Music 8 16 Music Music_log 8 16 Nature Nature 8 16 Nature Nature_log 8 16 Solutions Solutions 8 46 Solutions Solutions_log 8 46 Solutions Solutions_dat_2 10 46 Solutions Solutions_dat_3 10 46 Solutions Solutions_log_2 10 46 tempdb tempdev 8 16 tempdb templog 8 16 WideWorldImporters WWI_Primary 1024 3172 WideWorldImporters WWI_Log 100 3172 WideWorldImporters WWI_UserData 2048 3172 world world 8 16 world world_log 8 16
Ini mencantumkan setiap database, file untuk setiap database, ukuran file untuk setiap file, serta total semua file untuk setiap database. Ini mengharuskan setiap database (dan ukuran totalnya) dicantumkan beberapa kali (sekali untuk setiap file).