2011-06-27 38 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;