sqlsever 數據庫收縮處理

 

SQL code
1、用BACKUP LOG database WITH NO_LOG清除日誌 把數據庫屬性中的故障還原模型改爲“簡單”可以大大減慢日誌增長的速度。 如果把還原模型調到簡單,這樣就不支持時間點還原了,但是日誌文件會很小,如果數據比較重要推薦還是把數據庫的還原模型調爲完全 用BACKUP LOG database WITH NO_LOG命名後,會截斷不活動日誌,不減小物理日誌文件的大小,但邏輯日誌會減小,收縮數據庫後會把不活動虛擬日誌刪除來釋放空間,不會損壞數據。 如果日誌被截斷並收縮數據庫後,就不能直接用最近的一個全庫備份做時間點還原,建議立即備份數據庫,以防萬一。 2、sql server運行中,是否能刪除主數據庫事務日誌文件 步驟如下:(1)、分離數據庫企業管理器--數據庫--右擊你要刪除日誌的數據庫--所有 任務--分離數據庫 (2)、然後刪除日誌文件 (3)、然後再附加數據庫 企業管理器--數據庫--右擊數據庫--所有任務--附加數據庫這時候只附加。mdf就可以了。 3、壓縮SQL數據庫及日誌的詳細方法 SQL Server 2000基礎教程——壓縮數據庫數據庫在使用一段時間後,時常會出現因數據刪除而造成數據庫中空閒空間太多的情況,這時就需要減少分配給數據庫文件和事務日誌文件的磁盤空間,以免浪費磁盤空間。當數據庫中沒有數據時,可以修改數據庫文件屬性直接改變其佔用空間,但當數據庫中有數據時,這樣做會破壞數據庫中的數據,因此需要使用壓縮的方式來縮減數據庫空間。可以在數據庫屬性選項中選擇“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 命令對數據庫中指定的文件進行壓縮。 (1DBCC SHRINKDATABASE DBCC SHRINKDATABASE 命令語法如下: DBCC SHRINKDATABASE (database_name [, target_percent] [, {NOTRUNCATE | TRUNCATEONLY}] ) 各參數說明如下: ·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_name | file_id } { [, target_size] | [, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } ) 各參數說明如下: ·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) 企業管理器裏面的方法: 1、打開企業管理器 2、打開要處理的數據庫 3、點擊最上面菜單>工具>SQL查詢分析器,打開SQL查詢分析器 4、在輸入窗口裏面輸入: Code: DUMP TRANSACTION [數據庫名] WITH NO_LOG BACKUP LOG [數據庫名] WITH NO_LOG DBCC SHRINKDATABASE([數據庫名]) 點擊綠色的小三角(或按F5)執行查詢,等狀態欄提示處理完成 即可! 程序裏面的方法: 壓縮數據庫日誌 --1.清空日誌 exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG') --2.截斷事務日誌: exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG') --3.收縮數據庫文件(如果不壓縮,數據庫的文件不會減小 exec('DBCC SHRINKDATABASE(['+@dbname+'])')   4、減小日誌的方法: 一、用如下步做了: 1DUMP TRANSACTION 庫名 WITH no_log 2dbcc shrinkfile(logfilename) 3、收縮數據庫 4、設定自動收縮。   二、分離數據庫,刪除日誌文件,再附加,OK!右擊數據庫--所有任務--分離or 附加   三、1backup log 庫名 WITH no_log,2dbcc shrinkfile(logfilename),3、收縮數據庫 4、設定自動收縮。 1.清空日誌 DUMP TRANSACTION 庫名 WITH NO_LOG 2.截斷事務日誌: BACKUP LOG 庫名 WITH NO_LOG --收縮數據庫 DBCC SHRINKDATABASE(庫名) --收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from sysfiles DBCC SHRINKFILE(1) sql2000的方法: backup log 數據庫名 with NO_LOG backup log 數據庫名 with TRUNCATE_ONLY DBCC SHRINKDATABASE(數據庫名) backup log db with no_log --截斷事務日誌 GO DBCC SHRINKDATABASE(N'db' ) --收縮數據庫 GO DBCC SHRINKFILE (N'db' , 0, TRUNCATEONLY) --收縮數據文件 GO DBCC SHRINKFILE (N'db_log' , 0, TRUNCATEONLY)--收縮日誌文 GO --收縮失敗,可能是磁盤的交換空間太小,需要把磁盤剩餘空間調大一些
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章