Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

6 Cara Memeriksa Ukuran Database di SQL Server menggunakan T-SQL

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Batasan Pemeriksaan pada Beberapa Kolom di SQL Server - Tutorial SQL Server / TSQL Bagian 84

  2. SQL Server:Jadikan semua UPPER case menjadi Proper Case/Title Case

  3. Cara Menghapus Akun Email Database dari Profil di SQL Server (T-SQL)

  4. Alat untuk Membuat Skrip Data Tabel

  5. Memperbarui Data Salesforce dengan Kursor SQL Server