我们的项目要求在数据库中存储数百万条记录(约1亿条)。 我们知道SQL Express Edition 2012可以最大限度地容纳10GB的数据。 我正在使用此查询来获取数据库的实际大小 - 这是对的吗?
use [Bio Lambda8R32S50X]
SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'Bio Lambda8R32S50X'
GO
SET NOCOUNT ON
DBCC UPDATEUSAGE(0)
-- Table row counts and sizes.
CREATE TABLE #t
(
[name] NVARCHAR(128),
[rows] CHAR(11),
reserved VARCHAR(18),
data VARCHAR(18),
index_size VARCHAR(18),
unused VARCHAR(18)
)
INSERT #t EXEC sp_msForEachTable 'EXEC sp_spaceused ''?'''
SELECT *
FROM #t
-- # of rows.
SELECT SUM(CAST([rows] AS int)) AS [rows]
FROM #t
DROP TABLE #t
第二个问题是这个限制只是关于主文件组的数据库大小还是包含日志文件? 如果我们做了很多删除和插入,或者可能删除并插回相同数量的记录,数据库大小是否会变化或保持不变?
这非常重要,因为这将决定我们是否可以继续使用SQL Server 2012 Express Edition?
谢谢和问候
Subasish
答案 0 :(得分:0)
我可以看到第一个查询是获取数据和日志的数据库的总大小。第二个是每个表。所以我会对两者都说是。
根据我看到db超过40GB且此链接maximum DB size limits的经验,sql server express的限制是基于mdf和ndf文件而不是ldf。
然而,您可能会更安全,只需使用SQL Server Standard并在数据库开始增长时使用CAL许可。
祝你好运!