Sql-Server-Express

SQL Server Express 2012 數據庫大小限制

  • January 30, 2020

我檢查了論壇還有其他類似的主題,但我的情況不同。對於數據庫屬性下的 myDatabase -> 正常選項卡,它顯示:

Size : 25285.31 MB
Space Available: 3989.13 MB

並在磁碟上

myDB.mdf = 10.0 GB (10,745,806,848 bytes)
myDB_log.ldf = 14.6 GB (15,767,764,992 bytes)

根據我的理解,Expres 版本只允許 10GB,但這裡似乎更多。數據庫屬性中的可用空間參數是什麼。

SQL Server Express 僅對數據文件施加文件大小限制,日誌文件可以增長到任意大小。數據庫屬性視窗中顯示的大小是數據和日誌文件的組合大小。

不過有些令人困惑的是,此視窗上顯示的可用空間值僅與數據文件有關。如果您想更詳細地了解這一點,我建議您查詢系統表,而不是依賴 SSMS GUI(它並不總是會給您想要/需要的資訊)。以下腳本將顯示有關數據文件大小/增長設置的一些更詳細資訊:

SELECT 
   [TYPE] = DF.TYPE_DESC
   ,[FILE_Name] = DF.name
   --,[FILEGROUP_NAME] = FG.name
   ,[File_Location] = DF.PHYSICAL_NAME
   ,[FILESIZE_MB] = CONVERT(DECIMAL(10,2),DF.SIZE/128.0)
   ,[USEDSPACE_MB] = CONVERT(DECIMAL(10,2),DF.SIZE/128.0 - ((SIZE/128.0) - CAST(FILEPROPERTY(DF.NAME, 'SPACEUSED') AS INT)/128.0))
   ,[FREESPACE_MB] = CONVERT(DECIMAL(10,2),DF.SIZE/128.0 - CAST(FILEPROPERTY(DF.NAME, 'SPACEUSED') AS INT)/128.0)
   ,[FREESPACE_%] = CONVERT(DECIMAL(10,2),((DF.SIZE/128.0 - CAST(FILEPROPERTY(DF.NAME, 'SPACEUSED') AS INT)/128.0)/(DF.SIZE/128.0))*100)
   ,[AutoGrow] = 'By ' + CASE is_percent_growth WHEN 0 THEN CAST(growth/128 AS VARCHAR(10)) + ' MB -' 
       WHEN 1 THEN CAST(growth AS VARCHAR(10)) + '% -' ELSE '' END 
       + CASE max_size WHEN 0 THEN 'DISABLED' WHEN -1 THEN ' Unrestricted' 
           ELSE ' Restricted to ' + CAST(max_size/(128*1024) AS VARCHAR(10)) + ' GB' END 
       + CASE is_percent_growth WHEN 1 THEN ' [WARNING: Autogrowth by percent]' ELSE '' END
FROM sys.database_files DF
LEFT JOIN sys.filegroups FG
ON DF.data_space_id = FG.data_space_id 
order by DF.TYPE desc, DF.NAME; 

順便說一句:由於您的數據文件已經是 10GB,未來的增長操作將失敗(並且任何觸發增長的事務都會生成主文件組已滿錯誤)。由於該文件正好設置為 10GB,我懷疑它是故意增長到這個數量以利用 SQL Express 提供的全部空間。

引用自:https://dba.stackexchange.com/questions/189048