標籤:style blog http 使用 io strong 檔案 資料
每次看到暴漲的資料庫日誌就有些頭大,於是亂搜一通找個辦法把日誌幹掉,下次又頭大,又搜半天,於是還是寫篇blog,不用亂找了。
1.將資料庫設定成 簡單 模式
選擇要收縮的資料庫,點右鍵 屬性->選項,選擇 簡單模式
2.選擇任務->收縮->檔案
3.選擇日誌
或者用如下語句
代碼USE [master]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE
GO
USE DNName
GO
DBCC SHRINKFILE (N‘LogFileName‘ , 0,TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL
GO
SQL Server 2000要清理日誌使用的是dump語句,但是在SQL Server2008裡,這個語句不管用了,如果記錄檔很大,比如超過1G,就需要截斷一下記錄檔以加快sqlserver的運行速度,在SQL Server2008裡,方法改為:
有資料庫 xxdb 在 SQL Server 2008 下,記錄檔已經超過1G。
以往使用BACKUP語句-BACKUP LOG xxdb WITH NO_LOG 已經失效,在查閱 MSDN 之後發現 MS 提供的標準截斷日誌語句已經變為了 “BACKUP LOG 語句不指定 WITH COPY_ONLY”
使用語句 BACKUP LOG xxdb to disk=‘x:\work\1.bak‘ 成功將記錄檔備份,並截斷記錄檔。這裡x:代表你想要備份檔案的盤符。
然後使用 DBCC SHRINKFILE (xxdb_log,10) 收縮記錄檔到 10M
總結:
完整的收縮記錄檔的 T-SQL 陳述式:
BACKUP LOG xxdb to disk=‘x:\work\1.bak‘
DBCC SHRINKFILE (xxdb_log,10)
GO
--
BACKUP LOG <db_name> to disk=<‘backupfilename‘>
DBCC SHRINKFILE (<log_filename>,10)
GO
裡面的x:\work是隨意設定的。當然也可以收縮到比如5M或1M。
資料庫的資料是極其寶貴的,作為管理員的一項主要工作就是對資料庫按計划進行備份,從而在效能和資料安全找個平衡。換句話說備份的目的就是防範可能的硬體故障,自然災害或資料被非法篡改。備份可以分為完整備份,差異備份和事物記錄備份。完整備份備份整個資料庫,包含資料庫檔案,這些檔案的地址及事物日誌中的從備份開始時記錄的日誌順序號到備份結束時的日誌順序號。完整備份是其他備份的基礎,沒有完整備份將無法進行差異備份和事物記錄備份。步驟:開啟SQL Server Management Studio,展開伺服器檔案夾下的資料庫檔案夾右擊要備份的資料庫,選擇“屬性”選項把“選項”頁面上的“復原模式”改為“完整”,這步操作主要是為了保留日誌,為接下來的事物記錄備份做準備。右擊需要做備份的資料庫,選擇“任務”、“備份”,在“備份資料庫”對話方塊中選擇“備份類型”為“完整”。選擇備份裝置在“選項”頁面上選擇“覆蓋所有的現有備份組”,從而初始化嶄新的裝置或覆蓋現有的裝置建議選取“完成後驗證備份”來核對實際資料庫與備份副本以保證一致性單擊“確定”開始備份備份完成後可以查看一下,開啟SQL Server Management Studio下的“物件總管”,展開“伺服器對象”下的“備份裝置”,右擊裝置選擇“屬性”選項,在“媒體內容”頁面上看到我們作的備份差異備份記錄自上一個完整備份後資料庫發生的所有變化,與事物記錄備份的區別就是差異備份始終以上一個完整備份為起點,而事物記錄備份是以上一次備份為起點的。當執行差異備份時SQL Server讀取上一次完整備份的最後日誌順序號,並找出自上次完整備份後發生變化的頁面,並對發生變化所在頁面的整個盤區(Extent)進行備份。步驟:開啟SQL Server Management Studio,展開伺服器檔案夾下的資料庫檔案夾右擊需要做備份的資料庫,選擇“任務”、“備份”,在“備份資料庫”對話方塊中選擇“備份類型”為“差異”。選擇備份裝置在“選項”頁面上選擇“追加到現有備份組”,不覆蓋現有的完整備份,不要選擇“覆蓋所有的現有備份組”從而避免覆蓋現有的完整備份。建議選取“完成後驗證備份”來核對實際資料庫與備份副本以保證一致性單擊“確定”開始備份最後一種是事物記錄備份,事物記錄備份依賴於完整備份但並不備份資料庫本身,只備份事物日誌中自上一個事物記錄備份以來發生變化的部分。關於事物日誌再多提一點,在資料庫使用完全或批量日誌恢複模型時,事物記錄備份是唯一能從事物日誌中清除舊事物日誌的方式,當資料庫使用簡單恢複模型時完整備份與差異備份才能清除事物日誌。步驟:開啟SQL Server Management Studio,展開伺服器檔案夾下的資料庫檔案夾右擊需要做備份的資料庫,選擇“任務”、“備份”,在“備份資料庫”對話方塊中選擇“備份類型”為“事物日誌”。選擇備份裝置在“選項”頁面上選擇“追加到現有備份組”,不覆蓋現有的完整備份,不要選擇“覆蓋所有的現有備份組”從而避免覆蓋現有的完整備份。建議選取“完成後驗證備份”來核對實際資料庫與備份副本以保證一致性單擊“確定”開始備份常見的備份主要是以上三種,除此以外,在大型資料庫中還有一種選擇:檔案組備份,每次只從資料庫中備份一小部分,在本文不對檔案組備份作討論。備份策略的設計相比較幾種備份方式,用一句話形容就是存在即合理,每種備份方式都有其優缺點和適應範圍,要根據實際工作具體考慮純完整備份優點是恢複過程是所有策略中最快的,相對的,它的備份過程也是所有策略中最慢的,另外,純完整備份無法清除事物日誌(使用完全或大量復原模型且保留時間點恢複功能),作為補充可以使用TRUNCATE_ONLY從句執行一個事物記錄備份,僅清空而不備份事物日誌。完整&差異備份優點是恢複過程是所有策略中較快的,同時它的備份過程也不是所有策略中最慢的,此外,完整&差異備份同樣無法清除事物日誌(使用完全或大量復原模型且保留時間點恢複功能),可以使用TRUNCATE_ONLY從句執行一個事物記錄備份,僅清空而不備份事物日誌。完整&事物記錄備份優點是備份過程比完整&差異備份快但它的恢複是最麻煩的,完整&事物記錄備份能夠清除事物日誌,是任何一種Database Backup策略所必不可缺的。