Ако използвате GUI инструмент, като SSMS за управление на вашите бази данни, можете лесно да проверите размера на вашата база данни, като щракнете през GUI (щракнете с десния бутон върху базата данни, посочете Отчети , след това Стандартни отчети и след това щракнете върху Използване на диск ).
Ако обаче предпочитате да използвате T-SQL за управление на вашите бази данни, ще трябва да изпълните заявка, която връща тази информация.
Тази статия представя шест начина за проверка на размера на база данни на SQL Server с помощта на T-SQL.
Запазената процедура sp_spaceused
Това е системна съхранена процедура, която показва броя на редовете, запазеното дисково пространство и дисковото пространство, използвано от таблица, индексиран изглед или опашка на Service Broker в текущата база данни, или показва дисковото пространство, запазено и използвано от цялата база данни.
За да го използвате, просто превключете към съответната база данни и изпълнете процедурата. Като това:
ИЗПОЛЗВАЙТЕ WideWorldImporters;EXEC sp_spaceused;
Резултат:
database_name database_size неразпределено пространство ------------- ------------ -----WideWorldImporters 3172,00 MB 2511,76 MB 1 ред(и) върнати запазени данни index_size неизползван --------- --------- ---------- --- ----573688 KB 461728 KB 104120 KB 7840 KB 1 ред(ове) върнати
Това връща два набора от резултати, които предоставят съответната информация.
Можете също да предоставите име на обект, за да върнете данни за конкретен обект в базата данни. В този случай ще бъде върнат само един набор от резултати.
Пример:
ИЗПОЛЗВАЙТЕ WideWorldImporters;EXEC sp_spaceused N'Application.Cities';
Резултат:
именни редове запазени данни index_size неизползван------ -------------------- -------- ------- ---------- ------Градове 37940 4880 KB 3960 KB 896 KB 24 KB
В този пример връщаме информация за Cities
само маса.
Запазената процедура sp_helpdb
Друга системна съхранена процедура е sp_helpdb
.
Ето пример за извикване на това:
EXEC sp_helpdb N'WideWorldImporters';
Резултат:
name fileid име на файл filegroup size maxsize растеж използване ------------ ------ ---------------- ----- ---- ---------- ------------- --------- ---------WWI_Primary 1 /data/WWI .mdf PRIMARY 1048576 KB Неограничен 65536 KB само данни за WWI_Log 2 /data/WWI.ldf null 102400 KB 2147483648 KB 65536 KB само за регистрационен файл WWI_UserData 3 /datamit25 KB 3 /datamit25 KB 3 /dataed25 KBВ този случай ние предаваме името на базата данни като аргумент. Можем също да извикаме
sp_helpdb
без да предоставя аргумент. Ако направим това, той ще върне информация за всички бази данни вsys.databases
изглед на каталог.Съхранената процедура sp_databases
Още една опция е
sp_databases
системна съхранена процедура. Тази съхранена процедура изброява бази данни, които се намират или в екземпляр на SQL Server, или са достъпни през шлюз на база данни.Ето как да го изпълните:
EXEC sp_databases;Резултат:
DATABASE_NAME DATABASE_SIZE ЗАБЕЛЕЖКИ----------------------- ------------ -------master 6848 null модел 16384 null msdb 15616 null Музика 16384 null Природа 16384 null Решения 47104 null tempdb 16384 null Тест 16384 null WideWorldImporters 3248128 null свят 16384 World 16384 null.Изгледът sys.master_files
Горната съхранена процедура отправя заявка към
sys.master_files
изглед. Така че алтернатива е да отидете направо до изгледа и да изберете колоните си:ИЗБЕРЕТЕ име, размер, размер * 8/1024 'Размер (MB)', max_sizeFROM sys.master_filesWHERE DB_NAME(database_id) ='WideWorldImporters';Резултат:
name size Размер (MB) max_size ------------ ------ --------- ---------WWI_Primary 131072 1024 - 1 WWI_Log 12800 100 268435456WWI_UserData 262144 2048 -1В този случай можем да видим размера на всеки файл с данни и регистрационен файл, тъй като те са изброени отделно. Ще забележите също, че извършвам изчисление на
size
колона, за да преобразувате стойността в мегабайти (MB).Изгледът sys.database_files
Има и системен изглед, наречен
sys.database_files
. Можем да използваме този изглед, за да върнем същата информация като предишния пример:ИЗПОЛЗВАЙТЕ WideWorldImporters;ИЗБЕРЕТЕ име, размер, размер * 8/1024 'Размер (MB)', max_sizeFROM sys.database_files;Резултат:
name size Размер (MB) max_size ------------ ------ --------- ---------WWI_Primary 131072 1024 - 1 WWI_Log 12800 100 268435456WWI_UserData 262144 2048 -1Използвайте функция за прозорец
Един потенциален проблем с предишните два примера е, че те изброяват размера на всеки файл поотделно. Това може да се разглежда като положително или отрицателно в зависимост от това какво искате да постигнете.
Може също да се твърди, че първите три решения на тази страница са проблематични, защото предоставят само общата сума на всички файлове – те не изброяват всеки отделен файл заедно с неговия размер.
И така, ако искате да видите и размера на всеки отделен файл, и общата сума на всички файлове за всяка база данни?
Можете да използвате
OVER
клауза, за да направите точно това.Ето един пример:
ИЗБЕРЕТЕ d.name КАТО 'База данни', m.name КАТО 'Файл', m.size, m.size * 8/1024 'Размер (MB)', SUM(m.size * 8/1024) НАД ( PARTITION BY d.name) КАТО 'Общо на базата данни', m.max_sizeFROM sys.master_files mINNER JOIN sys.databases d ONd.database_id =m.database_id;Резултат:
Размер на файла на базата данни (MB) Общо на базата данни----------------------- --------------- ------ --- --------------master master 4 6 master mastlog 2 6 model modeldev 8 16 model modellog 8 16 msdb MSDBData 14 14 msdb MSDBLog 0 14 Музика Музика 8 16 Музика Music_log 8 16 Природа Nature 8 16 Nature Nature_log 8 16 Решения Решения 8 46 Решения Solutions_log 8 46 Решения Solutions_dat_2 10 46 Решения 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 100 3172 WideWorldImporters 100 3172 WideWorldImporters 100 3172 WideWorldImporters 8 16 WideWorldImporters WWI_PrimaryТова изброява всяка база данни, файловете за всяка база данни, размера на файла за всеки файл, както и общата сума на всички файлове за всяка база данни. Това изисква всяка база данни (и общият им размер) да бъде изброена няколко пъти (веднъж за всеки файл).