SQL Server Express 2012 数据库大小限制

Nis*_*idi 6 sql-server-express

我查看了论坛还有其他类似的主题,但我的情况不同。对于数据库属性下的 myDatabase -> 常规选项卡,它显示:

Size : 25285.31 MB
Space Available: 3989.13 MB
Run Code Online (Sandbox Code Playgroud)

并在磁盘上

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

根据我的理解,Expres 版只允许 10GB,但这里似乎更多。DB 属性中的可用空间参数是多少。

小智 5

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; 
Run Code Online (Sandbox Code Playgroud)

顺便说一句:由于您的数据文件已经是 10GB,因此未来的增长操作将失败(并且无论触发增长的事务都将生成主文件组已满错误)。由于该文件被精确设置为 10GB,我怀疑它已被故意增大到这个大小以利用 SQL Express 提供的全部空间。