我正在开发一个网站,该网站的数据库使用SQL Server 2008 R2 Express。在测试中,该数据库中存储了许多数据和图像。
According to wiki, the SQL Server Express edition has a 10 GB size limit.当我插入数据并达到限制时,将引发什么异常?或者,如何通过代码检测接近极限问题?
我将EF 5与代码优先方法结合使用,以插入大型数据集。
最佳答案
在测试中,我看到了:
sp_spaceused
无法正常运行,删除大量记录后显示为12GB。而且关于查询sys.databases的其他答案对我来说还不够清楚。
到处搜索我发现关于Ramons weblog上SQL Server 2012 Express Edition 10GB大小限制的很好解释[EDIT2018更新链接]
SELECT
[name] AS [Filename],
[size]/128.0 AS [Filesize],
CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [UsedSpaceInMB],
[size]/128.0 - CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [AvailableSpaceInMB],
[physical_name] AS [Path]
FROM sys.database_files
“...空间包括事务日志,并且还包括这些文件中所有未使用的空间。...。当SQL Server Express无法为数据文件保留更多空间时,它将开始提示。”
所以检查
CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [UsedSpaceInMB]
似乎是最好的选择。
与c#中的EF结合,我对数据库的请求看起来像
string sqlSelect = "SELECT CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [UsedSpaceInMB] FROM sys.database_files";
var dbResult = dbInstance.Database.SqlQuery<Decimal>(sqlSelect).FirstOrDefault();
double spaceUsedInGb = Convert.ToDouble(dbResult)/1024;
关于c# - 如何检查我的SQL Server Express数据库是否超过10 GB的大小限制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19853166/