資料庫在使用一段時間後,時常會出現因資料刪除而造成資料庫中空閒空間太多的情況,這時就需要減少分配給資料庫檔案和事務日誌檔案的磁碟空間,以免浪費磁碟空間。當資料庫中沒有資料時,可以修改資料庫檔案屬性直接改變其占用空間,但當資料庫中有資料時,這樣做會破壞資料庫中的資料,因此需要使用壓縮的方式來縮減資料庫空間。可以在資料庫屬性選項中選擇「auto shrink」選項,讓系統自動壓縮資料庫,也可以用人工的方法來壓縮。人工壓縮資料庫有以下兩種方式:
1、用enterprise manager 壓縮資料庫
在enterprise manager 中在所要壓縮的資料庫上單擊右鍵,從快捷選單中的「所有任務(all tasks)」中選擇「shrink database(壓縮資料庫)」選項,就會出現如圖6-10 所示的對話方塊。可以在圖6-10 所示的對話方塊中選擇資料庫的壓縮方式,也可以選擇使用壓縮計畫或壓縮單個檔案。
單擊圖6-10 中的「files」按鈕,會出現如圖6-11 所示的壓縮資料庫檔案對話方塊,可以針對每個資料庫檔案進行不同的壓縮設定。
單擊圖6-10 中的「change」 按鈕,會出現如圖6-12 所示的壓縮計畫編輯對話方塊,可以指定壓縮計畫的執行方式。單擊圖6-12 中的「change」 按鈕,會出現如圖6-13 所示的迴圈工作計畫編輯對話方塊,可以編輯計畫執行的週期或時間點。設定完成後單擊「ok」 按鈕就開始壓縮資料庫,在壓縮結束後會顯示乙個壓縮情況資訊框。
2、用transact-sql 命令壓縮資料庫
可以使用dbcc shrinkdatabase 和dbcc shrinkfile 命令來壓縮資料庫。其中dbcc shrinkdatabase 命令對資料庫進行壓縮,dbcc shrinkfile 命令對資料庫中指定的檔案進行壓縮。
(1) dbcc shrinkdatabase
dbcc shrinkdatabase 命令語法如下:
dbcc shrinkdatabase (database_name [, target_percent]
[, ] )
各引數說明如下:
target_percent 指定將資料庫壓縮後,未使用的空間佔資料庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所佔的比例,則資料庫不會被壓縮。並且壓縮後的資料庫不能比資料庫初始設定的容量小。 notruecate
將資料庫縮減後剩餘的空間保留在資料庫,中不返還給作業系統。如果不選擇此選項,則剩餘的空間返還給作業系統。 truncateonly
將資料庫縮減後剩餘的空間返還給作業系統。使用此命令時sql server 將檔案縮減到最後乙個檔案分配,區域但不移動任何資料檔案。選擇此項後,target_percent 選項就無效了。
例6-14: 壓縮資料庫mytest 的未使用空間為資料庫大小的20%。
dbcc shrinkdatabase (mytest, 20)
執行結果如下:
dbcc execution completed. if dbcc printed error messages, contact your system administrator.
(2) dbcc shrinkfile
dbcc shrinkfile 命令壓縮當前資料庫中的檔案。其語法如下:
dbcc shrinkfile (
] } )
各引數說明如下:
file_id
指定要壓縮的檔案的鑑別號(identification number, 即id)。檔案的id 號可以通過 file_id()函式或如本章前面所講述的sp_helpdb 系統儲存過程來得到。 target_size
指定檔案壓縮後的大小。以mb 為單位。如果不指定此選項,sql server 就會盡最大可能地縮減檔案。 emptyfile
指明此檔案不再使用,將移動所有在此檔案中的資料到同一檔案組中的其它檔案中去。執行帶此引數的命令後,此檔案就可以用alter database 命令來刪除了。
其餘引數notruncate 和truncateonly 與dbcc shrinkdatabase 命令中的含義相同。
例6-15: 壓縮資料庫mydb 中的資料庫檔案mydb_data2 的大小到1mb。 use mydb dbcc shrinkfile (mydb_data2, 1)
MS SQL入門基礎 資料庫索引
使用者對資料庫最頻繁的操作是進行資料查詢。一般情況下,資料庫在進行查詢操作時需要對整個表進行資料搜尋。當表中的資料很多時,搜尋資料就需要很長的時間,這就造成了伺服器的資源浪費。為了提高檢索資料的能力,資料庫引入了索引機制。本章將介紹索引的概念及其建立與管理。8.1.1 索引的概念 索引是乙個單獨的 ...
MS SQL入門基礎 移動資料庫
在sql server 中可以使用拆分 detach 和附加 attach 的方法來移動資料庫。拆分資料庫是從伺服器中移去邏輯資料庫,但不會將作業系統中的資料庫檔案刪除。附加資料庫將會建立乙個新的資料庫,並複製儲存在已有的資料庫檔案和事務日誌檔案中的資料。使用系統儲存過程sp detach db 來...
MS SQL入門基礎 資料庫全文檢索
sql server 2000 的standard edition 和enterprise edition 版本提供了對錶資料中字串的複雜檢索功能 全文檢索 full text searches 此功能需要在安裝時通過自定義安裝選項來新增。10.7.1 全文索引和目錄 全文檢索是通過使用全文索引 f...