2010-06-16 48 views
3

我的任務是收縮SQL Server 2005數據庫。這是一個實時數據庫,運行速度約爲35GB。收縮數據庫

  1. 如何縮小數據庫?
  2. 這可以在數據庫存活的時候完成嗎?
  3. 數據庫在收縮時會有多大?

在此先感謝。

回答

7

首先,如果您可以避免收縮生產數據庫,那就這樣做。從長遠來看,購買額外的磁盤存儲幾乎總是更實用的解決方案。

有一個原因,你的數據庫數據/日誌文件已經增長到他們當前的大小,除非你已經從數據庫中清除了數據,那麼很可能(如果不是確定的話)你的數據庫將增長到當前大小再次,縮水練習。

考慮到這一點,您應該看看確定數據庫增長的原因。最後,如果您絕對必須縮小數據庫,請明智地選擇時間,即在您的實時系統通常承受較低工作負載時執行此維護。收縮數據文件會導致大量磁盤I/O,特別是在要重新組織數據頁時。

然後確定哪些數據文件或日誌文件包含最多的可用空間,並將這些文件的目標分別收縮。如果例如只有具有大量可用空間的日誌文件,則執行數據庫範圍縮小練習沒有意義。

要執行此操作,請參閱DBCC SHRINKFILE命令的文檔。

實用信息:

Indentify的自由空間數據庫總體量:

EXEC sp_spaceused 

確定的自由日誌空間量:

DBCC SQLPERF('logspace') 

確定的量每個數據/日誌文件的可用空間:

SELECT 
    name AS 'File Name' , 
    physical_name AS 'Physical Name', 
    size/128 AS 'Total Size in MB', 
    size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS 'Available Space In MB', 
    * 
FROM sys.database_files; 
4
  1. 打開SQL Server Management Studio。右鍵點擊數據庫 - >任務 - >收縮 - >數據庫

  2. 是的。數據庫保持有效。

  3. 很難說。這取決於35Gb文件中有多少可用空間。如果數據庫實際上使用所有35Gb存儲(而不是保留可用空間),那麼數據庫根本就不會縮小。