我每天都运行一个脚本(只有2天至今)来备份我的数据库:SQL Server:为什么不同备份的大小相同?
sqlcmd -E -S server-hl7\timeclockplus -i timeclockplus.sql
move "C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Backup\*.*" w:\
为什么是它从两个不同日期的备份在字节完全相同的大小?我知道一个事实,那就是数据库已经改变了!
我每天都运行一个脚本(只有2天至今)来备份我的数据库:SQL Server:为什么不同备份的大小相同?
sqlcmd -E -S server-hl7\timeclockplus -i timeclockplus.sql
move "C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Backup\*.*" w:\
为什么是它从两个不同日期的备份在字节完全相同的大小?我知道一个事实,那就是数据库已经改变了!
数据库文件(* .mdf,* .ldf)以块的形式分配 - 例如,他们使用给定数量的兆字节,直到该空间被填满,然后分配另一块(几兆字节)。
将性能分配给您添加到数据库中的每个单字节将会非常糟糕。
由于这种基于块的分配,在特定时间段内给定大小是绝对正常的 - 即使正在使用数据库并正在添加和删除数据。
因此,如果您压缩备份文件(使用zip/7zip),您应该看到它们确实会因为其中存在不同数量的“数据”而发生变化。 – 2010-07-16 16:42:05
是的,但备份只写入分配的页面。如果.bak文件的大小相同,则表示正在使用相同数量的页面,这是可能的,但在活动数据库中不太可能。我肯定会仔细检查备份脚本,看它是否实际替换了旧备份,或者到目前为止获得的两个备份不是同一文件的两个副本。最后,在另一台机器上进行备份恢复,查看它包含的内容。 – 2010-07-16 17:20:54
joel非常感谢你非常有帮助cmoment – 2010-07-16 19:05:02
SQL Server备份只包含数据页面。一页是8k。如果您每天的更改不会添加或删除页面(例如删除,添加),则要备份的页面数保持不变。
尝试在备份文件的CRC校验来看看有什么变化?
我该如何执行此操作? – 2010-07-16 16:26:29
第三方工具:http://www.mindworkshop.com/crc.html – gbn 2010-07-16 16:31:16
数据库预先分配空间,填补了这个空间,直到它需要成长,再成长为一个新的预分配的大小。 – 2010-07-16 16:06:27