2009-02-13 38 views
5

当用每个表的预测值填充时,我必须估计数据库的数据大小。它至少应包含用于数据和索引的大小。是否有可用于SQL Server 2005的数据调整工具?

在SQL Server 2000中,曾经有过类似这样的工具,它在提供每表的记录数量(我认为它随SQL 2000资源工具包一起提供)时产生了估计大小。我无法在2000或2005年找到此工具:(

我知道sp_spacedused,但这不适用于我,因为我必须预先使用值填充数据库,并且我可能有很多方案可以计算。

回答

2

在你的鞋子里,我可能只是创建数据库,并尝试用代表性的数据样本填充它,然后检查表的大小是什么样子。

该SQL脚本做它在所有的表 - 你不必对每一个单独的表调用注释sp_spaceused:

SELECT 
    t.NAME AS TableName, 
    i.name as indexName, 
    sum(a.total_pages) as TotalPages, 
    sum(a.used_pages) as UsedPages, 
    sum(a.data_pages) as DataPages, 
    (sum(a.total_pages) * 8)/1024 as TotalSpaceMB, 
    (sum(a.used_pages) * 8)/1024 as UsedSpaceMB, 
    (sum(a.data_pages) * 8)/1024 as DataSpaceMB 
FROM 
    sys.tables t 
INNER JOIN  
    sys.indexes i ON t.OBJECT_ID = i.object_id 
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id 
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id 
WHERE 
    t.NAME NOT LIKE 'dt%' AND 
    i.OBJECT_ID > 255 AND 
    i.index_id <= 1 
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name 
ORDER BY 
    object_name(i.object_id) 
2

你有没有使用工具来生成伪数据考虑?

您可以创建一个有足够的数据表,可以生产数据库大小的一个很好的估计(即创建一些有代表性的数据,然后因素它)。

您可能会发现诸如Red Gates SQL Data Generator之类的工具可以使用。

http://www.red-gate.com/products/SQL_Data_Generator/index.htm

干杯,约翰

2

上次我这样做是Excel中,铅笔,回信封和猜测的工作。答案不是太不准确。我猜你说的是严重的数据量,因为现在磁盘价格非常便宜/可用,除了最大的数据库之外,所有数据库都可以在小型(ish)服务器上运行。

您能否提供有关预计行数和您要存储的数据种类的更多详细信息。顺便说一句,不要在数据库中使用Blob/images/video - 一旦缩放,它就是一件丑陋的事情。

相关问题