Sql-Server

如何快速收縮所有數據庫的所有文件?

  • March 26, 2019

在 SQL Server(本例中為 2008)中,如何快速收縮實例上所有數據庫的所有文件,包括日誌和數據?我可以通過 SSMS 並右鍵點擊每個並選擇 Tasks -> Shrink,但我正在尋找更快的東西。

我編寫了一些“創建數據庫”腳本並忘記了它們的預設大小已經膨脹,並且不需要為該項目中的這些文件保留那麼多空間。

DBCC SHRINKDATABASE當您從 GUI 執行“Tasks -> Shrink”時,它實際上會在幕後發出命令。試試吧。當對話框出現時,不要點擊“確定”按鈕。相反,點擊“腳本”按鈕。您將在查詢視窗中看到該命令。將它與 sys.databases 上的查詢結合起來(省略 master 和 msdb),您可以編寫一個腳本來縮小所有數據庫。

例如(取自 jcolebrand 的評論):

SELECT 
     'USE [' + d.name + N']' + CHAR(13) + CHAR(10) 
   + 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0, TRUNCATEONLY)' 
   + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) 
FROM 
        sys.master_files mf 
   JOIN sys.databases d 
       ON mf.database_id = d.database_id 
WHERE d.database_id > 4;

複製該查詢的輸出並執行它以縮小所有文件。

引用自:https://dba.stackexchange.com/questions/358