sql收縮資料庫日誌
㈠ 資料庫日誌文件過大如何收縮
網頁鏈接我是用這個方法收縮的,可以將日誌收縮到1MB
守得雲開見月明,花了一個上午結合前輩的博客,終於弄好了sqlserver2008的資料庫日誌收縮到1MB,分享給大家
# 方法步驟
1、執行SQL語句改成「簡單模式」
2、收縮資料庫
3、執行SQL語句改回「完全模式」
## 第一步:執行SQL語句改成「簡單模式」
USE [master]
GO
ALTER DATABASE SlowXWebDB (改成你需要進行收縮的資料庫名) SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE SlowXWebDB (改成你需要進行收縮的資料庫名) SET RECOVERY SIMPLE --改成簡單模式
GO
## 第二步:進行資料庫操作
相關界面截圖和操作
假定:
資料庫名:SlowXWebDB
日誌文件名:SlowXWebDB_Log
## 第三步:執行SQL語句改成「完全模式」
USE [master]
GO
ALTER DATABASE SlowXWebDB (改成你需要進行收縮的資料庫名)SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE datebaseName(改成你需要進行收縮的資料庫名)SET RECOVERY FULL --還原為完全模式
GO
==最後不要忘記實測下資料庫是否能夠正常使用==
網頁鏈接
㈡ SQL資料庫中日誌收縮、截斷等等是什麼
如:shgzts為資料庫名
mp transaction shgzts with no_log --截斷日誌
backup log shgzts with no_log --備份日誌
dbcc shrinkdatabase(shgzts,truncateonly) --資料庫收縮
㈢ SQL Server 2000資料庫的事務日誌文件過大,如何將其縮小
拷獯穡涸贇QL Server中,所有對資料庫執行的更新操作都會記錄在資料庫的事務日誌文件中,除非將資料庫設為可自動收縮的或手動 的對資料庫進行了收縮,否則事務日誌文件將一直增長,直到達到事先設定的日誌文件增長上限或用盡所有可用的磁碟空間。如果當前的資料庫文件或日誌文件過大,可以使用以下兩個命令對其進行收縮:DBCC SHRINKDATABASE:收縮指定資料庫的所有數據和日誌文件的大小DBCC SHRINKFILE: 收縮資料庫的某個指定數據或日誌文件的大小 這兩個命令可以釋放資料庫中的空閑空間,並將資料庫或指定的資料庫文件收縮到指定的大小,但收縮後的數據文件或日誌文件的大小不會小於檔中現存的有效數據所佔空間的大小。 關於這兩個命令的具體使用方法,可以參考SQL Server 2000聯機叢書中的相應主題。另外,也可在SQL Server企業管理器中執行資料庫收縮,同樣是調用的以上兩個命令,效果類似。 在使用以上命令收縮日誌文件的時候需要注意,已寫入資料庫但未被截斷的事務日誌記錄是不會被收縮的,因為雖然這部分日誌記錄的信息已經寫入資料庫文件,但在使用事務日誌備份進行資料庫還原的時候,還將用到其中的信息。 對於使用簡單恢復模型的資料庫,事務日誌會在每次處理檢查點(CheckPoint)時自動被截斷。對於使用完全恢復模型或大容量日誌記錄恢復模型的資料庫,事務日誌只有在執行日誌備份(BACKUP LOG)時才會被截斷,這時事務日誌中記錄的信息被寫入事務日誌備份文件,而它們所佔用的這部分空間被標記為可用(即被截斷)。 截斷事務日誌並不會使日誌文件變小,但可以將其中的部分空間釋放供以後寫入新的日誌記錄使用。若要減少日誌文件的物理大小,則要使用上面提到的DBCC SHRINKDATABASE和DBCC SHRINKFILE命令。 在執行BACKUP LOG語句的時候,還可以使用WITH NO_LOG(或WITH TRUNCATE_ONLY,含義相同)參數,這時並不真正備份事務日誌,而只是截斷事務日誌中的非活動部分(這和普通的BACKUP LOG語句作用相同)。這適合於剩餘磁碟空間不夠進行事務日誌備份或不打算保留事務日誌中的非活動部分用於資料庫恢復的情況。 為避免事務日誌文件增長過快以致用盡所有磁碟空間的現象發生,一種辦法是將資料庫設為使用簡單恢復模型,這樣可以使SQL Server周期性的自動截斷事務日誌的非活動部分,並回收其佔用的空間供以後寫入事務日誌記錄使用。但這將使資料庫無法利用事務日誌備份還原到實時點,降低了資料庫的可靠性,因此一般不應用於生產型資料庫。 對於生產型資料庫,推薦的做法是使用完全恢復模型,並定期進行資料庫的完全備份和事務日誌備份。例如每周執行一次完全備份,每天執行一次事務日誌備份,這可以通過SQL Server企業管理器中的資料庫維護計劃向導很方便的實現(一般可以設為在每天夜裡業務不繁忙的某個時刻自動執行備份)。 通過定期執行資料庫的事務日誌備份,可以避免日誌文件的迅速增大,而使其保持一個比較穩定的大小。雖然資料庫備份文件也會佔用很多磁碟空間,但隨時可以將這些文件移到其他磁碟上或在不需要它們的時候將其刪除,而且可以在出現故障或誤操作的時候方便的進行資料庫的還原。 由於數據文件的大小是隨資料庫中數據量的增長而增長的,資料庫中已刪除的數據所佔的空間可以供新插入的資料使用;而在定期執行了事務日誌的備份後,我們可以將日誌文件的大小控制在一個比較合理的范圍。因此,一般不需要對資料庫進行收縮,也不推薦將資料庫設為自動收縮模式。建議僅在以下情況下執行資料庫的收縮:1、磁碟空間不足2、數據文件很大,但其中只包含較少量的數據(可能是以前有大量數據,但後來刪除了很多),並且預期今後資料庫中的數據量也不會很大。3、由於長期未進行事務日誌備份,導致事務日誌文件過大。減小事務日誌文件大小的另一種方法是:首先在該資料庫中執行CHECKPOINT命令,然後將該資料庫分離(Detach),再將與其對應的資料庫日誌文件(.ldf文件)改名或刪除或移動到其他目錄下,然後執行sp_attach_single_file_db存儲過程或在企業管理器中重新將其附加(Attach)。由於找不到原來的日誌文件,SQL Server將自動為該資料庫建立一個大小隻有504K的日誌文件。但這種方法必須暫時將資料庫離線,因此一般不適宜在生產環境中使用。如果當前資料庫的事務日誌文件過大,必須對其進行收縮的話,建議參照以下步驟:1、建議首先備份資料庫(但不是必需的):BACKUP DATABASE database_name TO backup_device
2、備份事務日誌:BACKUP LOG database_name TO backup_device如果不需要當前事務日誌中的記錄進行資料庫還原或沒有足夠的空間進行事務日誌備份的的話,也可僅執行以下命令截斷事務日誌:BACKUP LOG database_name WITH NO_LOG
3、收縮日誌文件:DBCC SHRINKFILE (log_file_name)其中log_file_name是事務日誌文件的邏輯名稱,可以在企業管理器中資料庫屬性的「事務日誌」頁中看到(如Northwind資料庫的默認事務日誌文件邏輯名稱為Northwind_log)。4、如果日誌文件仍然較大的話,可以嘗試重復執行一次BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。5、如果這時仍沒有明顯的效果,請執行DBCC OPENTRAN (database_name)檢查當前資料庫中是否存在長時間未提交的活動事務。有必要的話,可以斷開這些連接並重新嘗試截斷事務日誌和收縮日誌文件。6、日誌文件收縮完成後,建議立即執行一次資料庫的完全備份並根據實際需要制定適當的資料庫備份計劃。
㈣ SQL Server 壓縮日誌及資料庫文件大小
請按步驟進行 未進行前面的步驟時 請不要做後面的步驟 以免損壞你的資料庫
一般不建議做第 兩步 第 步不安全 有可能損壞資料庫或丟失數據 第 步如果日誌達到上限 則以後的資料庫處理會失敗 在清理日誌後才能恢復
清空日誌
DUMP TRANSACTION 庫名 WITH NO_LOG
截斷事務日誌
BACKUP LOG 資料庫名 WITH NO_LOG
收縮資料庫文件(如果不壓縮 資料庫的文件不會減小
企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮資料庫 收縮文件
選擇日誌文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了
選擇數據文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了
也可以用SQL語句來完成
收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
收縮指定數據文件 是文件號 可以通過這個語句查詢到:
select * from sysfiles
DBCC SHRINKFILE( )
為了最大化的縮小日誌文件(如果是sql 這步只能在查詢分析器中進行)
a 分離資料庫:
企業管理器 伺服器 資料庫 右鍵 分離資料庫
b 在我的電腦中刪除LOG文件
c 附加資料庫:
企業管理器 伺服器 資料庫 右鍵 附加資料庫
此法將生成新的LOG 大小隻有 多K
或用代碼
下面的示例分離 pubs 然後將 pubs 中的一個文件附加到當前伺服器
a 分離
EXEC sp_detach_db @dbname = pubs
b 刪除日誌文件
c 再附加
EXEC sp_attach_single_file_db @dbname = pubs
@physname = c:/Program Files/Microsoft
SQL Server/MSSQL/Data/pubs mdf
為了以後能自動收縮 做如下設置
企業管理器 伺服器 右鍵資料庫 屬性 選項 選擇 自動收縮
SQL語句設置方式:
EXEC sp_dboption 資料庫名
autoshrink TRUE
如果想以後不讓它日誌增長得太大
企業管理器 伺服器 右鍵資料庫 屬性 事務日誌
將文件增長限制為xM(x是你允許的最大數據文件大小)
SQL語句的設置方式:
lishixin/Article/program/SQLServer/201311/22266
㈤ sql server怎麼收縮日誌
一、確認恢復模式。以下是使用 SQL Server Management Studio 檢查資料庫的恢復模式。
㈥ sql 2012收縮日誌需要停鏡像嗎
sql收縮日誌不需要停止鏡像。
sql在不停止鏡像的情況下神州可以收縮日誌。先分離資料庫,然後刪除日誌文件,再附件資料庫。2.收縮文件,選擇日誌文件,設置將文件收縮到0M,試了一下,只能從65G收縮到55G,也就是只釋放了未使用的空間。
不用第三方工具而只使用sql server本身的功能有兩種方法。第一種比較簡單,在操作資料庫的時候,首先用begin tran語句顯式的標記一個事務,然後刪除數據,襪配如果確定需要恢復,則執行rollback tran語句,刪除操作就會被回滾。使用begin tran語句標記事務,如果不需要回滾,則使用commit tran進行提交,提告瞎指交後就不能再回滾了。
㈦ sql收縮資料庫日誌的幾種辦法
在SQL Server 2000/2005中可以快速壓縮日誌log文件,通過SQL,
方法一:
--BigData為資料庫名
DUMPTRANSACTIONBigDataWITHNO_LOG
BACKUPLOGBigDataWITHNO_LOG
DBCCSHRINKDATABASE(BigData)
執行以上語句可以快速壓縮日誌文件到1M。
但是以上語句中前兩行在SQL Server 2008下無法執行 ,
第一行提示「Incorrect syntax near the keyword 'TRANSACTION'.」
第二行提示「One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. 」
第三行可以執行。但日誌log文件沒有任何變化。
原來SQL Server 2008已經不再支持DUMPTRANSACTION和BACKUP LOG WITH NO_LOG,
sql Server 2005說明中明確:包含 DUMP 語句是為了向後兼容。而 後續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能,並著手修改當前還在使用該功能的應用程序。 使用 BACKUP。
SQL Server 2008說明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 選項已廢止。使用完整恢復模式或大容量日誌恢復模式時,如果必須刪除資料庫中的日誌備份鏈,請切換至簡單恢復模式。有關詳細信息,請參閱有關從完整恢復模式或大容量日誌恢復模式切換的注意事項。
方法二:
useDB_NAME
sp_dboptionDB_NAME,"trunc.logonchkpt.",true
checkpoint
sp_dboptionDB_NAME,"autoshrink",true
方法三:(請提前備份文件!!)
Detach資料庫。
刪除log文件。
附加資料庫,選移除log文件,此時SQL Server 會自動重新建立一個512K 的Log 文件。
方法四:
USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d: est.bak'
--.
DBCCSHRINKFILE(Bigdata_Log,1);
GO
㈧ sql server 資料庫怎樣壓縮資料庫日誌文件
具體方法有3種。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在這里衡中是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定資料庫的所有數據和日誌文件,執行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是謹譽要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫文件中所要的剩餘可用空間百分比。
2.收縮一次一個特定資料庫中的數據或日誌文件,執行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收縮的文件的標識
(ID)
號,若要獲得文件
ID,請使用
FILE_ID
函數或在當前資料庫中搜索
sysfiles;target_size是用兆位元組表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc
shrinkfile
將文件大小減少到默認文件大小。兩個dbcc都可以帶上參數notruncate或truncateonly,具體意思查看聯機幫助.
方法二:
第一步:
先備份整個資料庫以備不測
。
第二步:
備份結束後,在Query
Analyzer中執行如下的語句:
exec
sp_detach_db
yourDBName,true
--卸除這個DB在MSSQL中的注冊信息
第三步:
到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄
第四步:
在Query
Analyzer中執行如下的語句:
exec
sp_attach_single_file_db
yourDBName,'
d:\mssql\data\yourDBName_data.mdf
'
--以單文件的方式注冊該DB,如果成功則MSSQL將自動為這個DB生成一個500K的日誌文件。
方法三:
1.
進入企業管理器,選中資料庫,比如demo
2.
所有任務->分離資料庫
3.
到資料庫文件的存放目錄,將MuOnline_log.LDF文件刪除,以防萬一,你可以拷出去
4.
企業管理器->附加資料庫,選muonline,這個時候你會看見日誌文件這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否創建一個新的,確定就是了。
5.
記得資料庫重新附加後用戶要重新設置一下。
如果以後,不祥攔段想要它變大:
SQL2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用SQL語句:
alter
database
資料庫名
set
recovery
simple
㈨ sql2008下的鏡像資料庫怎樣做日誌收縮
這個問題我前幾天正好碰上,所以,相關的關鍵點告訴你
**********特別提示:《在操作之前請備份》************:
1、SQL SERVER 2008 的日誌會越來越大,如果是用於生產的,可能會大到可怕,反正我的資料庫,前幾天一看,不到1個月就十多個G的日誌文件。
2、要收縮、清除其實很簡單,關鍵點就一個:先把資料庫的恢復模式從默認的「完整」改為「簡單」。具體做法:對資料庫點 右鍵 -》屬性-》左邊 選擇頁 中 點 「選項」-》找到 「恢復模式」,改成「簡單」。
3、然後對資料庫點 右鍵 -》任務-》收縮 -》文件 -》出來的界面中,文件類型 選 「日誌」,點「確定」鈕-》OK了。
4、再次提示,在操作之前請備份,雖然我在操作中沒有碰上任務問題,但不保證你不出問題。
5、至於日誌文件縮完了,你是否要把它改回「完整」模式,你自個看著辦,我是讓它一直簡單,因為,以我的技術,要真的資料庫崩潰了,有日誌問題也是「然並卵」,反正我是一天自動兩次異盤備份,加每二小時增量備份,最後再加雙機熱備(用軟體實現的,那個軟體據說要賣幾萬一套,具體叫什麼就不說了,省得別人說我打廣告,呵呵)。
6、看了一下微軟的資料庫鏡像實現方案相關的東西,感覺太難了,不靠譜,有興趣你可以去試試。
7、最後,順便說,資料庫的恢復模式的選擇,對當前資料庫的運行應該是沒有什麼影響的,也許對於會用日誌文件進行數據查看和調整的人有用。
㈩ sql2008中如何收縮資料庫日誌文件
解決方法:
方法一
右鍵選擇資料庫-》任務-》收縮-》文件-》文件類型-》日誌-》在釋放未使用的空間前重新組織頁
方法二(不推薦)
1 必須先改成簡單模式
2 然後用
----Logical Files :
--CMS1.5_Data
--CMS1.5_Log
DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
GO
註:Data是數據文件,Log是日誌文件