2009-02-13 37 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 - 一旦縮放,它就是一件醜陋的事情。

相關問題