0

我们的项目要求在数据库中存储数百万条记录(约 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?

谢谢并恭祝安康

亚巴什

4

1 回答 1

0

我可以看到第一个查询是获取数据和日志的数据库的总体大小。第二个是针对每张桌子的。所以我会对两者都说是。

根据我看到 db 超过 40GB 的经验,并且此链接最大 DB 大小限制了 sql server express 的限制基于 mdf 和 ndf 文件而不是 ldf。

但是,您可能更安全,只是使用 SQL Server Standard 并使用 CAL 许可,以防您的数据库开始增长。

祝你好运!

于 2013-11-19T20:26:42.480 回答