Sql-Server

如何恢復 SQL Server 數據庫並同時收縮其文件?

  • September 23, 2010

假設我有一個 SQL Server 數據庫,其數據文件的初始大小為 100 GB,但它只包含 10 GB 的數據。一個數據庫備份的大小將只有 10 GB。

我想將此備份恢復到另一台伺服器(或同一台伺服器上的不同數據庫),但我不希望它佔用與原始備份相同的磁碟空間(100 GB),這是預設情況下發生的。

在進行備份之前我不能縮小原始數據庫(它是一個生產數據庫,它需要那麼多預先分配的空間);還原完成後,我可以縮小還原的數據庫,但我真的希望它在執行此操作時佔用 100 GB;此外,在這種特定情況下,我沒有那麼多可用磁碟空間,所以恢復不會去任何地方。

有什麼辦法可以恢復數據庫並讓它只佔用與它包含的實際數據一樣多的空間

不,對不起——不可能。還原將文件還原為備份時的狀態。Schinking 必須在此之後或進行備份之前完成。

如果您的磁碟空間緊張,那麼您可以將 .bak 文件放在網路共享上並從那裡恢復。如果您使用域帳戶執行 sql 伺服器並給予共享足夠的權限來讀取文件,則應該可以工作。

之前在你是不是瘋了的籃子中的另一個選項(但只有在你執行 sql server 2008 r2 時才有用)是 SQL Server 支持直接將數據庫文件創建到共享,而不必使用跟踪標誌 & 我可以告訴從個人經驗來看,它有效!因此,您可以將 WITH MOVE 還原到共享。

引用自:https://serverfault.com/questions/183588