熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

關於SQL Server事務日志的問題匯總

2022-06-13   來源: SQL Server 

  用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 按鈕就開始壓縮數據庫在壓縮結束後會顯示一個壓縮情況信息框
  
  用TransactSQL 命令壓縮數據庫
  
  可以使用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
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.