2011-06-27 77 views
2

我右鍵單擊數據庫 - >任務 - >複製數據庫並創建副本。複製了一個數據庫,但複製的大小更大

我注意到副本的大小約爲兩倍大(mb)。爲什麼 ?

+0

什麼做的sp_helpdb和註釋sp_spaceused說明了什麼? – ErikE

+0

sp_helpdb顯示原始數據庫具有5.94的db_size,副本具有11.56的db_size,sp_space,對於sp_spaceused使用相同的東西 –

+0

我剛剛做了副本副本,並且它們的大小相同,我將嘗試製作副本原來再 –

回答

2

我猜測MDF將會是相似的(相同的數據),但由於日誌記錄的數據總量,LDF更大。運行此數據庫:

SELECT size/128.0 AS MB, name, physical_name FROM sys.database_files 

此外,什麼是恢復模型?如果新的一個是FULL那麼LDF將增長到一個日誌備份發生(我懷疑「老字號」一個已經被截斷或這樣),請與:

SELECT recovery_model_desc, name FROM sys.databases 
0

我試過使用這個嚮導,數據和日誌文件對我來說大小完全一樣。我想知道源數據庫是否因爲副本(它可能由後臺作業,維護計劃或其他用戶完成)或者如果您使用任何壓縮產品(在SQL內或Windows內)而縮小了。此外,如果您可以確定哪些物體佔用更多空間,它可能會讓事情變得輕鬆。請注意兩個註釋點,您必須對舊的和新的數據庫名稱進行硬編碼。

DECLARE 
    @old_db SYSNAME = N'old_db_name', 
    @new_db SYSNAME = N'new_db_name'; 

WITH [old] AS 
(
    SELECT 
     t = OBJECT_SCHEMA_NAME([object_id], DB_ID(@old_db)) 
      + '.' + OBJECT_NAME([object_id], DB_ID(@old_db)), 
     r = row_count, 
     s = used_page_count 
    FROM old_db_name.sys.dm_db_partition_stats -- change this line! 
    WHERE index_id IN (0,1) 
    AND OBJECT_SCHEMA_NAME([object_id], DB_ID(@old_db)) <> 'sys' 
), 
[new] AS 
(
    SELECT 
     t = OBJECT_SCHEMA_NAME([object_id], DB_ID(@new_db)) 
      + '.' + OBJECT_NAME([object_id], DB_ID(@new_db)), 
     r = row_count, 
     s = used_page_count 
    FROM new_db_name.sys.dm_db_partition_stats -- change this line! 
    WHERE index_id IN (0,1) 
    AND OBJECT_SCHEMA_NAME([object_id], DB_ID(@new_db)) <> 'sys' 
) 
SELECT 
    [old].t, [new].t, 
    [old_rc] = SUM([old].r), [old_kb] = SUM([old].s*8), 
    [new_rc] = SUM([new].r), [new_kb] = SUM([new].s*8), 
    spot = CASE WHEN COALESCE(SUM([old].r), -1) <> COALESCE(SUM([new].r), -1) 
     OR COALESCE(SUM([old].s*8), -1) <> COALESCE(SUM([new].s*8), -1) THEN 
      ' <----------' ELSE '' END 
FROM 
    [old] FULL OUTER JOIN [new] 
    ON [old].t = [new].t 
GROUP BY [old].t, [new].t 
ORDER BY [old].t, [new].t;