Sql-Server-2008

來自多客戶數據庫的個人客戶備份

  • November 30, 2011

我們有一個多客戶數據庫,大小約為 95GB。其中一位客戶要求每月備份他們的數據。我們有一個腳本,可以從所有表中刪除與指定 ID 無關的所有記錄。

所以我們將數據庫的備份恢復到一個新的數據庫,執行我們的腳本來剝離它,這給我們留下了一個包含 1 個客戶而不是 100 個客戶的數據庫。但是數據庫的大小仍然是 95gb,儘管它現在應該是 90%+ 空的。

我嘗試了許多不同的組合,將其離線,然後重新聯機,剝離備份份,DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 的各種不同組合等。

到目前為止,我所做的最好的事情是將文件壓縮到大約 15GB 大約需要 9 個小時。每次收縮最多是 10-20%,即使我指定留下 0 個可用空間。

有幾個表包含圖像數據類型的列,我認為這與它有關,但我似乎仍然找不到可靠的解決方案。

最終目標是製定一個每月執行一次的計劃/作業,以將備份還原到新數據庫,將其剝離、縮小,然後將其備份到文件夾並刪除新數據庫。但如果可能的話,我們真的希望在不到 9-12 小時內實現這一目標。

任何幫助,將不勝感激。

我懷疑還原過程正在創建一個 95 GB 的數據庫。來自收縮數據庫:

數據庫不能小於數據庫的最小大小。最小大小是最初創建數據庫時指定的大小,或者是使用 DBCC SHIRNKFILE 或 ALTER DATABASE 等文件大小更改操作顯式設置的最後一個大小。例如,如果最初創建一個大小為 10 MB 的數據庫,然後增長到 100 MB,則即使數據庫中的所有數據都已刪除,該數據庫也可以減少到最小為 10 MB。

我會通過編寫一個創建新數據庫並為客戶數據進行選擇的腳本來改變您執行此操作方式

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