sql >> Databáze >  >> RDS >> Sqlserver

6 způsobů, jak zkontrolovat velikost databáze na serveru SQL pomocí T-SQL

Pokud ke správě databází používáte nástroj GUI, jako je SSMS, můžete velikost databáze snadno zkontrolovat kliknutím přes GUI (klikněte pravým tlačítkem na databázi a přejděte na Zprávy a poté Standardní přehledy a poté klikněte na Využití disku ).

Pokud však ke správě databází dáváte přednost použití T-SQL, budete muset spustit dotaz, který tyto informace vrátí.

Tento článek představuje šest způsobů, jak zkontrolovat velikost databáze SQL Server pomocí T-SQL.

Uložená procedura sp_spaceused

Toto je systémová uložená procedura, která zobrazuje počet řádků, rezervované místo na disku a místo na disku používané tabulkou, indexovaným pohledem nebo frontou Service Broker v aktuální databázi, nebo zobrazuje místo na disku rezervované a využívané celou databází.

Chcete-li jej použít, jednoduše se přepněte do příslušné databáze a proveďte postup. Takhle:

USE WideWorldImporters;EXEC sp_spaceused;

Výsledek:

název_databáze_velikost_databáze nepřidělený prostor------------------ ------------- ------------ -----WideWorldImporters 3172,00 MB 2511,76 MB 1 řádek vrácený rezervovaná data velikost_indexu nepoužito --------- --------- ---------- --- ---- 573688 KB 461728 KB 104120 KB 7840 KB 1 řádky vráceny

To vrátí dvě sady výsledků, které poskytují relevantní informace.

Můžete také zadat název objektu a vrátit data o konkrétním objektu v databázi. V tomto případě bude vrácena pouze jedna sada výsledků.

Příklad:

USE WideWorldImporters;EXEC sp_spaceused N'Application.Cities';

Výsledek:

název řádky rezervovaná data velikost_indexu nepoužito------ -------------------- -------- ------- ---------- ------Města 37940 4880 KB 3960 KB 896 KB 24 KB

V tomto příkladu vracíme informace o Cities pouze tabulka.

Uložená procedura sp_helpdb

Další uloženou procedurou v systému je sp_helpdb .

Zde je příklad volání:

EXEC sp_helpdb N'WideWorldImporters';

Výsledek:

name fileid name filegroup size maxsize growth use ------------ ------ ---------------- ----- ---- ---------- ------------- -------- ---------WWI_Primary 1 /data/WWI .mdf PRIMÁRNÍ 1048576 KB neomezeně 65536 kB pouze dataWWI_Log 2 /data/WWI.ldf null 102400 KB 2147483648 KB 65536 KB pouze protokol WWI_UserData 3
 V tomto případě předáváme jako argument název databáze. Můžeme také zavolat sp_helpdb bez uvedení argumentu. Pokud to uděláme, vrátí informace o všech databázích v sys.databases zobrazení katalogu.

Uložená procedura sp_databases

Další možností je sp_databases uložená procedura systému. Tato uložená procedura uvádí databáze, které jsou buď umístěny v instanci serveru SQL, nebo jsou přístupné přes bránu databáze.

Zde je návod, jak to provést:

EXEC sp_databases;

Výsledek:

DATABASE_NAME DATABASE_SIZE POZNÁMKY------------------ ------------- -------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 null 3 WorldD 

Zobrazení sys.master_files

Výše uložená procedura se dotazuje na sys.master_files Pohled. Alternativou je tedy přejít přímo do zobrazení a vybrat si své sloupce:

SELECT název, velikost, velikost * 8/1024 'Velikost (MB)', max_sizeFROM sys.master_filesWHERE DB_NAME(database_id) ='WideWorldImporters';

Výsledek:

velikost jména Velikost (MB) max_size ------------ ------ --------- ---------WWI_Primary 131072 1024 - 1 WWI_Log 12800 100 268435456WWI_UserData 262144 2048 -1 

V tomto případě můžeme vidět velikost každého datového souboru a souboru protokolu, protože jsou uvedeny samostatně. Také si všimnete, že provádím výpočet na size pro převod hodnoty na megabajty (MB).

Zobrazení sys.database_files

K dispozici je také systémové zobrazení s názvem sys.database_files . Toto zobrazení můžeme použít k vrácení stejných informací jako v předchozím příkladu:

USE WideWorldImporters;SELECT název, velikost, velikost * 8/1024 'Velikost (MB)', max_sizeFROM sys.database_files;

Výsledek:

velikost jména Velikost (MB) max_size ------------ ------ --------- ---------WWI_Primary 131072 1024 - 1 WWI_Log 12800 100 268435456WWI_UserData 262144 2048 -1 

Použití funkce okna

Jedním z potenciálních problémů s předchozími dvěma příklady je, že uvádějí velikost každého souboru samostatně. To může být vnímáno jako pozitivní nebo negativní v závislosti na tom, čeho chcete dosáhnout.

Dalo by se také namítnout, že první tři řešení na této stránce jsou problematická, protože poskytují pouze součet všech souborů – neuvádějí každý jednotlivý soubor spolu s jeho velikostí.

Co když tedy chcete vidět velikost každého jednotlivého souboru, a součet všech souborů pro každou databázi?

Můžete použít OVER klauzule udělat přesně to.

Zde je příklad:

SELECT d.name AS 'Database', m.name AS 'File', m.size, m.size * 8/1024 'Size (MB)', SUM(m.size * 8/1024) OVER ( ROZDĚLENÍ PODLE d.name) JAKO 'Database Total', m.max_sizeFROM sys.master_files mINNER JOIN sys.databases d ONd.database_id =m.database_id;

Výsledek:

Velikost souboru databáze (MB) Celková databáze ------------------ --------------- ------ --- --------------master master 4 6 master mastlog 2 6 model modeldev 8 16 model modellog 8 16 msdb MSDBData 14 14 msdb MSDBLog 0 14 Hudba Hudba 8 16 Hudba Music_log 8 16 Příroda 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 Sol utions Solutions_log_2 10 46 tempdb tempdev 8 16 tempdb templog 8 16 WideWorldImporters WWI_Primary 1024 3172 WideWorldImporters WWI_Log 100 3172 WideWorldImporters WW2186 world28 world217046 world2 

Zde jsou uvedeny všechny databáze, soubory pro každou databázi, velikost souboru pro každý soubor a také součet všech souborů pro každou databázi. To vyžaduje, aby každá databáze (a jejich celková velikost) byla uvedena vícekrát (pro každý soubor jednou).


  1. Vyhledejte v poli JSON objekt obsahující hodnotu odpovídající vzoru

  2. Nelze načíst ID posledního vloženého řádku v režimu spánku pomocí Oracle

  3. Vytvořte databázi SQL Server pomocí Azure Data Studio

  4. Připojení k MySQL nefunguje:2002 Žádný takový soubor nebo adresář