如何壓縮SQL Server 2005指定數據庫文件和日志的大小_第1頁
如何壓縮SQL Server 2005指定數據庫文件和日志的大小_第2頁
如何壓縮SQL Server 2005指定數據庫文件和日志的大小_第3頁
如何壓縮SQL Server 2005指定數據庫文件和日志的大小_第4頁
如何壓縮SQL Server 2005指定數據庫文件和日志的大小_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、如何壓縮SQL Server 2005指定數據庫文件和日志的大小?下面有兩個SQL語句可以達到在SQL Server 2005/2008壓縮指定數據庫文件和日志的大小的效果:1、DBCC SHRINKDATABASE (Transact-SQL)收縮指定數據庫中的數據文件和日志文件的大小。語法DBCC SHRINKDATABASE( database_name | database_id | 0 ,target_percent , NOTRUNCATE | TRUNCATEONLY ) WITH NO_INFOMSGS 參數database_name | database_id | 0 要收縮

2、的數據庫的名稱或 ID。如果指定 0,則使用當前數據庫。target_percent 數據庫收縮后的數據庫文件中所需的剩余可用空間百分比。NOTRUNCATE 通過將已分配的頁從文件末尾移動到文件前面的未分配頁來壓縮數據文件中的數據。target_percent 是可選參數。 文件末尾的可用空間不會返回給操作系統(tǒng),文件的物理大小也不會更改。因此,指定 NOTRUNCATE 時,數據庫看起來未收縮。 NOTRUNCATE 只適用于數據文件。日志文件不受影響。TRUNCATEONLY 將文件末尾的所有可用空間釋放給操作系統(tǒng),但不在文件內部執(zhí)行任何頁移動。數據文件只收縮到最近分配的區(qū)。如果與 TRU

3、NCATEONLY 一起指定,將忽略 target_percent。 TRUNCATEONLY 只適用于數據文件。日志文件不受影響。WITH NO_INFOMSGS 取消嚴重級別從 0 到 10 的所有信息性消息。結果集列名 說明DbId 數據庫引擎試圖收縮的文件的數據庫標識號。FileId 數據庫引擎嘗試收縮的文件的文件標識號。CurrentSize 文件當前占用的 8 KB 頁數。MinimumSize 文件最低可以占用的 8 KB 頁數。這與文件的最小大小或最初創(chuàng)建時的大小相對應。UsedPages 文件當前使用的 8 KB 頁數。EstimatedPages 數據庫引擎估計文件能夠收縮

4、到的 8 KB 頁數。備注若要收縮特定數據庫的所有數據和日志文件,請執(zhí)行 DBCC SHRINKDATABASE 命令。若要一次收縮一個特定數據庫中的一個數據或日志文件,請執(zhí)行 DBCC SHRINKFILE 命令。若要查看數據庫中當前的可用(未分配)空間量,請運行 sp_spaceused??稍谶M程中的任一點停止 DBCC SHRINKDATABASE 操作,任何已完成的工作都將保留。收縮后的數據庫不能小于數據庫的最小大小。最小大小是在數據庫最初創(chuàng)建時指定的大小,或是使用文件大小更改操作(如 DBCC SHIRNKFILE 或 ALTER DATABASE)顯式設置的最后大小。例如,如果數據

5、庫最初創(chuàng)建時的大小為 10 MB,后來增長到 100 MB,則該數據庫最小只能收縮到 10 MB,即使已經刪除數據庫的所有數據也是如此。運行 DBCC SHRINKDATABASE 而不指定 NOTRUNCATE 選項或 TRUNCATEONLY 選項等價于帶 NOTRUNCATE 運行 DBCC SHRINKDATABASE 操作,然后再帶 TRUNCATEONLY 運行 DBCC SHRINKDATABASE 操作。要收縮的數據庫不必在單用戶模式下;其他的用戶仍可以在數據庫收縮時對其進行工作。這也包括系統(tǒng)數據庫。不能在備份數據庫時收縮數據庫。反之,也不能在數據庫執(zhí)行收縮操作時備份數據庫。D

6、BCC SHRINKDATABASE 的工作原理DBCC SHRINKDATABASE 以每個文件為單位對數據文件進行收縮。然而,DBCC SHRINKDATABASE 在對日志文件進行收縮時,它將視為所有的日志文件都存在于一個連續(xù)的日志池中。文件始終從末尾開始收縮。假設名為 mydb 的數據庫有一個數據文件和兩個日志文件。數據文件和日志文件分別是 10 MB,并且數據文件包含 6 MB 數據。Microsoft SQL Server 2005 數據庫引擎對每個文件計算一個目標大小。這就是文件將要收縮到的大小。將 target_percent 與 DBCC SHRINKDATABASE 一起指

7、定時,數據庫引擎計算的目標大小是收縮后文件中的 target_percent 可用空間大小。例如,如果在收縮 mydb 時將 target_percent 指定為 25,則數據庫引擎將此文件的目標大小計算為 8 MB(6 MB 數據加上 2 MB 可用空間)。因此,數據庫引擎將任何數據從數據文件的后 2 MB 中移動到數據文件前 8 MB 的可用空間中,然后對該文件進行收縮。假設 mydb 的數據文件包含 7 MB 的數據。將 target_percent 指定為 30,以允許將此數據文件收縮到可用空間為 30。但是,將 target_percent 指定為 40 卻不會收縮數據文件,因為數據

8、庫引擎收縮文件的目標大小不能小于數據當前占用空間大小。您還可以用另一種方法來考慮此問題:所要求的 40 可用空間加上整個數據文件大小的 70(10 MB 中的 7 MB),超過了 100。因為所要求的可用百分比加上數據文件占用的當前百分比大于 100%(多出 10%),所以任何大于 30 的 target_size 都不會收縮此數據文件。對于日志文件,數據庫引擎使用 target_percent 來計算整個日志的目標大??;因此,target_percent 是收縮操作后日志中的可用空間大小。之后,整個日志的目標大小轉換為每個日志文件的目標大小。DBCC SHRINKDATABASE 嘗試立即將

9、每個物理日志文件收縮到其目標大小。如果虛擬日志中的所有邏輯日志部分都沒有超出日志文件的目標大小,則該文件將成功截斷,DBCC SHRINKDATABASE 完成且不顯示任何消息。但是,如果部分邏輯日志位于超出目標大小的虛擬日志中,則數據庫引擎將釋放盡可能多的空間,并發(fā)出一條信息性消息。該消息說明需要執(zhí)行哪些操作來將邏輯日志移出位于文件末尾的虛擬日志。執(zhí)行該操作以后,DBCC SHRINKDATABASE 可用于釋放剩余空間。有關詳細信息,請參閱收縮事務日志。因為日志文件只能收縮到虛擬日志文件邊界,所以不可能將日志文件收縮到比虛擬日志文件更?。词宫F(xiàn)在沒有使用該文件)。虛擬日志文件的大小在創(chuàng)建或

10、擴展這些日志文件時由數據庫引擎動態(tài)選擇。有關虛擬日志文件的詳細信息,請參閱事務日志物理體系結構。權限要求具有 sysadmin 固定服務器角色或 db_owner 固定數據庫角色的成員身份。、示例A. 收縮數據庫并指定可用空間的百分比以下示例將減小 UserDB 用戶數據庫中數據文件和日志文件的大小,以便在數據庫中留出 10% 的可用空間。DBCC SHRINKDATABASE (UserDB, 10);GOB. 截斷數據庫以下示例使 AdventureWorks 示例數據庫中的數據文件收縮到最后分配的區(qū)。DBCC SHRINKDATABASE (AdventureWorks, TRUNCAT

11、EONLY);請參考:/zh-cn/vs2008/ms190488(SQL.90).aspx2、DBCC SHRINKFILE (Transact-SQL)收縮當前數據庫的指定數據或日志文件的大小,或通過將數據從指定的文件移動到相同文件組中的其他文件來清空文件,以允許從數據庫中刪除該文件。文件大小可以收縮到比創(chuàng)建該文件時所指定的大小更小。這樣會將最小文件大小重置為新值。語法DBCC SHRINKFILE ( file_name | file_id , EMPTYFILE | , target_size , NOTRUNCATE | TRUNCAT

12、EONLY ) WITH NO_INFOMSGS 參數 file_name 要收縮的文件的邏輯名稱。file_id 要收縮的文件的標識 (ID) 號。若要獲得文件 ID,請使用 FILE_IDEX 系統(tǒng)函數,或查詢當前數據庫中的 sys.database_files 目錄視圖。target_size 用兆字節(jié)表示的文件大小(用整數表示)。如果未指定,則 DBCC SHRINKFILE 將文件大小減少到默認文件大小。默認大小是創(chuàng)建文件時指定的大小,或者是使用 ALTER DATABASE 所設置的最后大小。 如果指定了 target_size,則 DBCC SHRINKFILE 嘗試將文件收縮到

13、指定大小。將要釋放的文件部分中的已使用頁重新定位到保留的文件部分中的可用空間。例如,如果數據文件為 10 MB,則 target_size 為 8 的 DBCC SHRINKFILE 操作會將文件最后 2 MB 中所有的已使用頁重新分配到文件前 8 MB 中的任何未分配頁中。DBCC SHRINKFILE 不會將文件收縮到小于存儲文件中的數據所需要的大小。例如,如果使用 10 MB 數據文件中的 7 MB,則帶有 target_size 為 6 的 DBCC SHRINKFILE 語句只能將該文件收縮到 7 MB,而不能收縮到 6 MB。EMPTYFILE 將指定文件中的所有數據遷移到同一文件

14、組中的其他文件。由于數據庫引擎不再允許將數據放在空文件內,因此可以使用 ALTER DATABASE 語句來刪除該文件。NOTRUNCATE 在指定或不指定 target_percent 的情況下,將已分配的頁從數據文件的末尾移動到該文件前面的未分配頁。文件末尾的可用空間不會返回給操作系統(tǒng),文件的物理大小也不會更改。因此,指定 NOTRUNCATE 時,文件看起來未收縮。 NOTRUNCATE 只適用于數據文件。日志文件不受影響。TRUNCATEONLY 將文件末尾的所有可用空間釋放給操作系統(tǒng),但不在文件內部執(zhí)行任何頁移動。數據文件只收縮到最后分配的區(qū)。 如果隨 TRUNCATEONLY 指定

15、了 target_size,則會忽略該參數。 TRUNCATEONLY 只適用于數據文件。WITH NO_INFOMSGS 取消顯示所有信息性消息。結果集列名 說明DbId 數據庫引擎試圖收縮的文件的數據庫標識號。FileId 數據庫引擎試圖收縮的文件的文件標識號。CurrentSize 文件當前占用的 8 KB 頁數。MinimumSize 文件最低可以占用的 8 KB 頁數。這與文件的最小大小或最初創(chuàng)建時的大小相對應。UsedPages 文件當前使用的 8 KB 頁數。EstimatedPages 數據庫引擎估計文件能夠收縮到的 8 KB 頁數。收縮日志文件對于日志文件,SQL Serve

16、r 2005 數據庫引擎使用 target_size 來計算整個日志的目標大小;因此,target_size 是收縮操作后日志中的可用空間大小。之后,整個日志的目標大小轉換為每個日志文件的目標大小。DBCC SHRINKFILE 嘗試立即將每個物理日志文件收縮到其目標大小。但是,如果部分邏輯日志位于超出目標大小的虛擬日志中,則數據庫引擎將釋放盡可能多的空間,并發(fā)出一條信息性消息。該消息說明需要執(zhí)行哪些操作來將邏輯日志移出位于文件末尾的虛擬日志。執(zhí)行這些操作以后,DBCC SHRINKFILE 可用于釋放剩余空間。如果文件不收縮如果收縮操作運行時未出現(xiàn)錯誤,但文件大小看起來沒有發(fā)生更改,則請執(zhí)行

17、下列操作之一以驗證文件是否有足夠的可用空間可供刪除:運行以下查詢。SELECT name ,size/128.0 - CAST(FILEPROPERTY(name, SpaceUsed) AS int)/128.0 AS AvailableSpaceInMBFROM sys.database_files;權限要求具有 sysadmin 固定服務器角色或 db_owner 固定數據庫角色的成員身份。示例A. 將數據文件收縮到指定的目標大小以下示例將 UserDB 用戶數據庫中名為 DataFile1 的數據文件的大小收縮到 7MB。USE UserDB;GODBCC SHRINKFILE (Da

18、taFile1, 7);GOB. 將日志文件收縮到指定的目標大小以下示例將 AdventureWorks 數據庫中的日志文件收縮到 1 MB。若要允許 DBCC SHRINKFILE 命令收縮文件,首先需要通過將數據庫恢復模式設置為 SIMPLE 來截斷該文件。USE AdventureWorks;GO- Truncate the log by changing the database recovery model to SIMPLE.ALTER DATABASE AdventureWorksSET RECOVERY SIMPLE;GO- Shrink the truncated log file to 1 MB.DBCC SHRINKFILE (AdventureWorks_Log, 1);GO- Reset the database recovery model.ALTER DATABASE AdventureWorksSET RE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論