我每天都運行一個腳本(只有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