gpt4 book ai didi

c# - 如何检查我的 SQL Server Express 数据库是否超过 10 GB 的大小限制?

转载 作者:行者123 更新时间:2023-11-30 19:27:02 25 4
gpt4 key购买 nike

我正在开发一个网站,它的数据库使用 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 的其他答案对我来说还不够清楚。

四处搜索后,我找到了关于 SQL Server 2012 Express Edition 10GB Size Limit on Ramons weblog 的非常好的解释。 [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]

似乎是最好的选择。

中与 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com