簡體   English   中英

SQL Server 2014 Express上的可用空間

[英]Free space on SQL Server 2014 Express

由於Express版本限制為10 GB(至少是對我來說,由於文檔令人困惑,所以無法確定是“每個數據庫”還是整個數據庫),我想知道是否有辦法檢查此空間可用性,即到目前為止我用了多少? 我使用了互聯網上的一些建議,但並非所有數據庫都以某種方式出現。

10 GB用於數據文件大小。 您可以像這樣獲取每個文件的使用百分比:

;WITH x AS 
(
  SELECT name, [file] = physical_name, size = size * 8, 
    su_bytes = FILEPROPERTY(name, 'SpaceUsed') * 8
  FROM sys.database_files
)
SELECT name, [file], size, SpaceUsed = su_bytes,
  [SpaceUsed%] = CONVERT(DECIMAL(5,2), su_bytes*100.0/size)
FROM x;

sys.database_files手冊中所述, size列保存以8K頁表示的大小,因此將值乘以8可得到以千字節為單位的大小。 同樣適用於FILEPROPERTY(..., 'SpaceUsed') 要獲得其他單位的金額,請相應地更改計算。

您是對的...做了一些谷歌搜索,發現了一個更好的解決方案:

SELECT name AS 'File Name' , physical_name AS 'Physical Name', size/128 AS 'Total Size in MB',

size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS 'Available Space In MB', *

FROM sys.database_files;

更好:

SELECT DB_NAME(A.DATABASE_ID) AS DBNAME,A.NAME AS FILENAME ,

SIZE/128.0 AS CURRENTSIZE_MB,

B.RECOVERY_MODEL_DESC,A.TYPE_DESC ,

CASE WHEN IS_PERCENT_GROWTH = 0

THEN LTRIM(STR(A.GROWTH * 8.0 / 1024,10,1)) + ' MB, '

ELSE 'BY ' + CAST(A.GROWTH AS VARCHAR) + ' PERCENT, 'END +

CASE WHEN MAX_SIZE = -1 THEN 'UNRESTRICTED GROWTH'

ELSE 'RESTRICTED GROWTH TO ' +LTRIM(STR(MAX_SIZE * 8.0 / 1024,10,1)) + ' MB'

END AS AUTOGROW,A.PHYSICAL_NAME

FROM SYS.MASTER_FILES A JOIN SYS.DATABASES B

ON A.DATABASE_ID =B.DATABASE_ID

--WHERE A.PHYSICAL_NAME LIKE 'E%'

-- AND A.FILE_ID =2

ORDER BY A.SIZE/128.0 DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM