SQL?Server?查詢數(shù)據(jù)庫及數(shù)據(jù)文件大小的方法
1. 直接使用SQL
1.1 查詢當(dāng)前數(shù)據(jù)庫大小
EXEC sp_spaceused;
說明:
該命令會(huì)返回當(dāng)前數(shù)據(jù)庫的總大小、未使用空間等信息。
前提是你已經(jīng) USE 到目標(biāo)數(shù)據(jù)庫中。
1.2 查詢所有數(shù)據(jù)庫的大小
SELECT DB_NAME(database_id) AS DatabaseName, CAST(SUM(size) * 8 / 1024.0 AS DECIMAL(18,2)) AS SizeMB FROM sys.master_files GROUP BY database_id ORDER BY SizeMB DESC;
說明:
包括數(shù)據(jù)文件(.mdf)和日志文件(.ldf)的大小。
size 單位是 8KB,所以需要乘 8 后再除以 1024 轉(zhuǎn)換為 MB。
如果需要輸出 GB 大小,可使用如下SQL:
SELECT DB_NAME(database_id) AS DatabaseName, CAST(SUM(size) * 8 / 1024.0 AS DECIMAL(18,2)) AS TotalSizeMB, CAST(SUM(size) * 8 / 1024.0 / 1024.0 AS DECIMAL(18,2)) AS TotalSizeGB FROM sys.master_files GROUP BY database_id ORDER BY TotalSizeMB DESC;
1.3 查詢每個(gè)數(shù)據(jù)庫的詳細(xì)文件大小
SELECT DB_NAME(mf.database_id) AS DatabaseName, mf.name AS LogicalName, mf.type_desc AS FileType, mf.physical_name AS FilePath, CAST(mf.size * 8 / 1024.0 AS DECIMAL(18,2)) AS SizeMB FROM sys.master_files mf ORDER BY DatabaseName, FileType;
說明:
可以看到每個(gè)文件的邏輯名稱、文件類型(數(shù)據(jù)或日志)、路徑及大小。
如果你需要指定某個(gè)數(shù)據(jù)庫名查詢,也可以加上條件,例如:
WHERE DB_NAME(mf.database_id) = 'YourDatabaseName'
2.調(diào)用存儲(chǔ)過程
如果不想每次寫SQL查詢,建議寫成可重復(fù)使用的存儲(chǔ)過程,之后調(diào)用存儲(chǔ)過程即可。
2.1 查詢所有數(shù)據(jù)庫的大?。〝?shù)據(jù)和日志文件分開顯示)
如下存儲(chǔ)過程可列出所有數(shù)據(jù)庫的大小(數(shù)據(jù)和日志文件分開顯示),單位為 MB:
--創(chuàng)建存儲(chǔ)過程 USE master; GO CREATE PROCEDURE dbo.GetAllDatabaseSizes AS BEGIN SET NOCOUNT ON; SELECT DB_NAME(mf.database_id) AS DatabaseName, mf.type_desc AS FileType, -- ROWS = 數(shù)據(jù)文件,LOG = 日志文件 CAST(SUM(mf.size) * 8 / 1024.0 AS DECIMAL(18,2)) AS SizeMB FROM sys.master_files mf GROUP BY mf.database_id, mf.type_desc ORDER BY DatabaseName, FileType; END; GO
調(diào)用方式如下:
EXEC dbo.GetAllDatabaseSizes;
2.2 查詢所有數(shù)據(jù)庫的大?。〝?shù)據(jù) + 日志)合并顯示
CREATE PROCEDURE dbo.GetDatabaseTotalSizes AS BEGIN SET NOCOUNT ON; SELECT DB_NAME(database_id) AS DatabaseName, CAST(SUM(size) * 8 / 1024.0 AS DECIMAL(18,2)) AS TotalSizeMB FROM sys.master_files GROUP BY database_id ORDER BY TotalSizeMB DESC; END; GO
調(diào)用方式如下:
EXEC dbo.GetDatabaseTotalSizes;
2.3 查詢所有數(shù)據(jù)庫的大小(輸出 GB、加上磁盤路徑等信息)
USE master; GO CREATE PROCEDURE dbo.GetDatabaseFileDetails AS BEGIN SET NOCOUNT ON; SELECT DB_NAME(mf.database_id) AS DatabaseName, mf.type_desc AS FileType, -- ROWS 或 LOG mf.physical_name AS FilePath, -- 文件完整路徑 CAST(mf.size * 8 / 1024.0 AS DECIMAL(18,2)) AS SizeMB, CAST(mf.size * 8 / 1024.0 / 1024.0 AS DECIMAL(18,2)) AS SizeGB FROM sys.master_files mf ORDER BY DB_NAME(mf.database_id), mf.type_desc; END; GO
調(diào)用方式如下:
EXEC dbo.GetDatabaseFileDetails;
到此這篇關(guān)于SQL Server 查詢數(shù)據(jù)庫及數(shù)據(jù)文件大小的文章就介紹到這了,更多相關(guān)SQL Server 查看數(shù)據(jù)庫大小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL語句練習(xí)實(shí)例之六 人事系統(tǒng)中的缺勤(休假)統(tǒng)計(jì)
這是一個(gè)人事系統(tǒng)中的示例,要求記錄一下員工的缺勤情況2011-10-10SQL Server 數(shù)據(jù)庫備份和還原認(rèn)識和總結(jié) (一)
可能許多同學(xué)對SQL Server的備份和還原有一些了解,也可能經(jīng)常使用備份和還原功能,我相信除DBA之外我們大部分開發(fā)員隊(duì)伍對備份和還原只使用最基礎(chǔ)的功能,對它也只有一個(gè)大概的認(rèn)識,如果對它有更深入的認(rèn)識,了解它更全面的功能豈不是更好,到用時(shí)會(huì)得心應(yīng)手2012-08-08sql時(shí)間段切分實(shí)現(xiàn)每隔x分鐘出一份高速門架車流量
本文主要介紹了sql時(shí)間段切分實(shí)現(xiàn)每隔x分鐘出一份高速門架車流量,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02SQLServer存儲(chǔ)過程創(chuàng)建和修改的實(shí)現(xiàn)代碼
這篇文章主要介紹了SQLServer存儲(chǔ)過程創(chuàng)建和修改的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-05-05Sql Server中一個(gè)表2個(gè)字段關(guān)聯(lián)同一個(gè)表(代碼解決)
Sql Server中一個(gè)表2個(gè)字段關(guān)聯(lián)同一個(gè)表(代碼解決),需要的朋友可以參考一下2013-02-02SQL Server游標(biāo)的使用/關(guān)閉/釋放/優(yōu)化小結(jié)
游標(biāo)打破了這一查詢的思考是面向集合的規(guī)則,游標(biāo)使得我們思考方式變?yōu)橹鹦羞M(jìn)行,接下來為大家介紹下游標(biāo)的使用感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-03