用BACKUP LOG database WITH NO_LOG清除日志把數據庫屬性中的故障還原模型改為
簡單
可以大大減慢日志增長的速度
如果把還原模型調到簡單
這樣就不支持時間點還原了
但是日志文件會很小
如果數據比較重要推薦還是把數據庫的還原模型調為完全用BACKUP LOG database WITH NO_LOG命名後
會截斷不活動日志
不減小物理日志文件的大小
但邏輯日志會減小
收縮數據庫後會把不活動虛擬日志刪除來釋放空間
不會損壞數據
如果日志被截斷並收縮數據庫後
就不能直接用最近的一個全庫備份做時間點還原
建議立即備份數據庫
以防萬一
sql server運行中
是否能刪除主數據庫事務日志文件
步驟如下
(
)
分離數據庫企業管理器--數據庫--右擊你要刪除日志的數據庫--所有任務--分離數據庫
(
)
然後刪除日志文件
(
)
然後再附加數據庫
企業管理器--數據庫--右擊數據庫--所有任務--附加數據庫這時候只附加
mdf就可以了
壓縮SQL數據庫及日志的詳細方法
SQL Server
基礎教程
壓縮數據庫
數據庫在使用一段時間後
時常會出現因數據刪除而造成數據庫中空閒空間太多的情況
這時就需要減少分配給數據庫文件和事務日志文件的磁盤空間
以免浪費磁盤空間
當數據庫中沒有數據時
可以修改數據庫文件屬性直接改變其占用空間
但當數據庫中有數據時
這樣做會破壞數據庫中的數據
因此需要使用壓縮的方式來縮減數據庫空間
可以在數據庫屬性選項中選擇
Auto shrink
選項
讓系統自動壓縮數據庫
也可以用人工的方法來壓縮
人工壓縮數據庫有以下兩種方式
用Enterprise Manager 壓縮數據庫在Enterprise Manager 中在所要壓縮的數據庫上單擊右鍵
從快捷菜單中的
所有任務(All Tasks)
中選擇
ShrinkDatabase(壓縮數據庫)
選項
就會出現如圖
所示的對話框
可以在圖
所示的對話框中選擇數據庫的壓縮方式
也可以選擇使用壓縮計劃或壓縮單個文件單擊圖
中的
Files
按鈕
會出現如圖
所示的壓縮數據庫文件對話框
可以針對每個數據庫文件進行不同的壓縮設置
單擊圖
中的
Change
按鈕
會出現如圖
所示的壓縮計劃編輯對話框
可以指定壓縮計劃的執行方式
單擊圖
中的
Change
按鈕
會出現如圖
所示的循環工作計劃編輯對話框
可以編輯計劃執行的周期或時間點
設置完成後單擊
OK
按鈕就開始壓縮數據庫
在壓縮結束後會顯示一個壓縮情況信息框
用Transact
SQL 命令壓縮數據庫
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令來壓縮數據庫
其中DBCC SHRINKDATABASE 命令對數據庫進行壓縮
DBCC SHRINKFILE 命令對數據庫中指定的文件進行壓縮
(
) DBCC SHRINKDATABASE
DBCC SHRINKDATABASE 命令語法如下
DBCC SHRINKDATABASE (database_name [
target_percent]
[
{NOTRUNCATE | TRUNCATEONLY}] )
各參數說明如下
·target_percent 指定將數據庫壓縮後
未使用的空間占數據庫大小的百分之幾
如果指定的百分比過大
超過了壓縮前未使用空間所占的比例
則數據庫不會被壓縮
並且壓縮後的數據庫不能比數據庫初始設定的容量小
·NOTRUECATE
將數據庫縮減後剩余的空間保留在數據庫
中不返還給操作系統
如果不選擇此選項
則剩余的空間返還給操作系統
·TRUNCATEONLY
將數據庫縮減後剩余的空間返還給操作系統
使用此命令時SQLServer 將文件縮減到最後一個文件分配
區域但不移動任何數據文件
選擇此項後
target_percent 選項就無效了
例
壓縮數據庫mytest 的未使用空間為數據庫大小的
%
dbcc shrinkdatabase (mytest
)
運行結果如下
DBCC execution completed
If DBCC printed error
messages
contact your system administrator
(
) 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 為單位
如果不指定此選項
SQLServer 就會盡最大可能地縮減文件
·EMPTYFILE
指明此文件不再使用
將移動所有在此文件中的數據到同一文件組中的其它文件中去
執行帶此參數的命令後
此文件就可以用ALTER DATABASE 命令來刪除了
其余參數NOTRUNCATE 和TRUNCATEONLY 與DBCC SHRINKDATABASE
命令中的含義相同
例
: 壓縮數據庫mydb 中的數據庫文件mydb_data
的大小到
MB
use mydb dbcc shrinkfile (mydb_data
)
企業管理器裡面的方法
打開企業管理器
打開要處理的數據庫
點擊最上面菜單>工具>SQL查詢分析器
打開SQL查詢分析器
在輸入窗口裡面輸入:
Code:
DUMP TRANSACTION [數據庫名] WITH NO_LOG
BACKUP LOG [數據庫名] WITH NO_LOG
DBCC SHRINKDATABASE([數據庫名])
點擊綠色的小三角(或按F
)執行查詢
等狀態欄提示處理完成即可!
程序裡面的方法
壓縮數據庫日志
清空日志
exec(
DUMP TRANSACTION [
+@dbname+
] WITH NO_LOG
)
截斷事務日志
exec(
BACKUP LOG [
+@dbname+
] WITH NO_LOG
)
收縮數據庫文件(如果不壓縮
數據庫的文件不會減小
exec(
DBCC SHRINKDATABASE([
+@dbname+
])
)
減小日志的方法
一
用如下步做了
DUMP TRANSACTION 庫名 WITH no_log
dbcc shrinkfile(logfilename)
收縮數據庫
設定自動收縮
二
分離數據庫
刪除日志文件
再附加
OK!
右擊數據庫--所有任務--分離or 附加
三
backup log 庫名 WITH no_log
dbcc shrinkfile(logfilename)
收縮數據庫
設定自動收縮
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22149.html