清理資料庫日誌sql
❶ MSsql 清空日誌 刪除日誌文件
最近的項目主要做數據的歸檔 把數據從一個資料庫拉到另一個資料庫 造成新資料庫的日誌文件非常大 或者資料庫在使用過程中會使日誌文件不斷 增加 使得資料庫的性能下降 並且佔用大量的磁碟空間 於是想把日誌文件刪除 最簡單就是先分離資料庫 》刪除日誌文件 》最後附加數據 我這里需要在 SSIS中調用 所以已羨輪殲sql腳本為主
兩種簡單的清除日誌的方法
一分離附加法 首先把資料庫分離 分離資料庫之前一定要做好資料庫的全備份 選擇資料庫——右鍵——任務——分離 其中葯勾選刪除連接!
分離後在資料庫列表將看不到已分離的資料庫 刪除資料庫的LOG文件資料庫文件夾下的對應資料庫的 ldf文件 附加資料庫 附加的時候會提醒找不到log文件 到時附加上後會自動創建一個新的日誌文件 從而達到清理資料庫的目的
二 sql語句清除mssql日誌 DUMP TRANSACTION TestDB WITH NO_LOG 清除日誌 DBCC SHRINKFILE ( TestDB_log ) 收縮資料庫文件 BACKUP LOG TestDB WITH NO_LOG 截兄沖斷事務日誌 該命令在SQL Server 也桐滑是不支持 在SQL Server 和 可以使用
首先我們需要獲取資料庫文件的路徑
declare @logfilename varchar( ) declare @datafilename varchar( ) select @logfilename=physical_name from sys database_files where type= select @datafilename=physical_name from sys database_files where type=
然後切換到master下 分離資料庫
use master exec sp_detach_db @dbname= TestVFA ;
緊接下來就是刪除資料庫 日誌文件 Remove file DECLARE @Result int DECLARE @FSO_Token int EXEC @Result = sp_OACreate Scripting FileSystemObject @FSO_Token OUTPUT EXEC @Result = sp_OAMethod @FSO_Token DeleteFile NULL @logfilename EXEC @Result = sp_OADestroy @FSO_Token 最後就是附加資料庫 exec sp_attach_single_file_db @dbname= TestVFA @physname=@datafilename
注意 默認Ole Automation Proceres 是禁用的我們需要啟用它
lishixin/Article/program/MySQL/201311/29584
❷ 如何清理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
❸ 如何清空sql資料庫的日誌文件
SQLSERVER的資料庫日誌佔用很大的空間,下面提供三種方法用於清除無用的資料庫日誌文件x0dx0a方法一: x0dx0a1、打開查詢分析器,輸入命令 x0dx0aBACKUP LOG database_name WITH NO_LOG x0dx0a2、再打開企業管理器--右鍵要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至xxm,這里會給出一個允許收縮到的最小m數,直接輸入這個數,確定就可以了。 x0dx0ax0dx0a方法二: x0dx0a設置檢查點,自動截斷日誌 x0dx0ax0dx0a一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大 x0dx0a1、設置資料庫模式為簡單模式:打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊打開你的伺服器-->雙擊打開資料庫目錄-->選擇你的資料庫名稱(如用戶資料庫cwbase1)-->然後點擊右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇「簡單」,然後按確定保存 x0dx0a2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的默認設置不用調整,直接點確定 x0dx0a3、收縮資料庫完成後,建議將您的資料庫屬性重新設置為標准模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據 x0dx0ax0dx0a方法三:通過SQL收縮日誌 x0dx0ax0dx0a把代碼復制到查詢分析器里,然後修改其中的3個參數(資料庫名,日誌文件名,和目標日誌文件的大小),運行即可 x0dx0ax0dx0aSET NOCOUNT ON x0dx0aDECLARE @LogicalFileName sysname, x0dx0a@MaxMinutes INT, x0dx0a@NewSize INT x0dx0ax0dx0aUSE tablename -- 要操作的資料庫名 x0dx0aSELECT @LogicalFileName = 'tablename_log', -- 日誌文件名 x0dx0a@MaxMinutes = 10, -- Limit on time allowed to wrap log. x0dx0a@NewSize = 1 -- 你想設定的日誌文件的大小(M) x0dx0ax0dx0a-- Setup / initialize x0dx0aDECLARE @OriginalSize int x0dx0aSELECT @OriginalSize = size x0dx0aFROM sysfiles x0dx0aWHERE name = @LogicalFileName x0dx0aSELECT 'Original Size of ' + db_name() + ' LOG is ' + x0dx0aCONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + x0dx0aCONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' x0dx0aFROM sysfiles x0dx0aWHERE name = @LogicalFileName x0dx0aCREATE TABLE DummyTrans x0dx0a(DummyColumn char (8000) not null) x0dx0ax0dx0aDECLARE @Counter INT, x0dx0a@StartTime DATETIME, x0dx0a@TruncLog VARCHAR(255) x0dx0aSELECT @StartTime = GETDATE(), x0dx0a@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' x0dx0ax0dx0aDBCC SHRINKFILE (@LogicalFileName, @NewSize) x0dx0aEXEC (@TruncLog) x0dx0a-- Wrap the log if necessary. x0dx0aWHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired x0dx0aAND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) x0dx0aAND (@OriginalSize * 8 /1024) > @NewSize x0dx0aBEGIN -- Outer loop. x0dx0aSELECT @Counter = 0 x0dx0aWHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) x0dx0aBEGIN -- update x0dx0aINSERT DummyTrans VALUES ('Fill Log') x0dx0aDELETE DummyTrans x0dx0aSELECT @Counter = @Counter + 1 x0dx0aEND x0dx0aEXEC (@TruncLog) x0dx0aEND x0dx0aSELECT 'Final Size of ' + db_name() + ' LOG is ' + x0dx0aCONVERT(VARCHAR(30),size) + ' 8K pages or ' + x0dx0aCONVERT(VARCHAR(30),(size*8/1024)) + 'MB' x0dx0aFROM sysfiles x0dx0aWHERE name = @LogicalFileName x0dx0aDROP TABLE DummyTrans x0dx0aSET NOCOUNT OFF x0dx0ax0dx0a方法四:刪除日誌文件。 x0dx0ax0dx0a此方法有一定的風險性,因為sql server的日誌文件不是即時寫入資料庫主文件的,如處理不當,會造成數據的損失。1、操作前請斷開所有資料庫連接。 x0dx0a2、分離資料庫 x0dx0a分離資料庫:企業管理器->伺服器->資料庫->cwbase1->右鍵->分離資料庫 x0dx0a分離後,cwbase1資料庫被刪除,但保留了數據文件和日誌文件 x0dx0a3、刪除log物理文件 x0dx0a刪除LOG物理文件,然後附加資料庫: 企業管理器->伺服器->資料庫->右鍵->附加資料庫 x0dx0a此法生成新的log,大小隻有500多k。 x0dx0ax0dx0a注意:建議使用第一種方法。操作前請確保所有操作員都已經推出系統,斷開資料庫的連接。 x0dx0ax0dx0a以上操作前,請務必做好數據備份!x0dx0ax0dx0a1.sql server 2005 清除日誌語句 x0dx0ax0dx0amp transaction 資料庫名稱 with no_log x0dx0abackup log 資料庫名稱 with no_log x0dx0adbcc shrinkdatabase(資料庫名稱)
❹ 如何清除SQL資料庫日誌清除後對資料庫有什麼影響
教你如何清除SQL日誌 x0dx0ax0dx0a1.打開查詢分析器,輸入命令x0dx0aDUMP TRANSACTION 資料庫名 WITH NO_LOGx0dx0a2.再打開企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了。x0dx0ax0dx0a清除Log有兩種方法:x0dx0ax0dx0a 1.自動清除法x0dx0ax0dx0a 開放資料庫選項 Trunc Log on Chkpt,使資料庫系統每隔一段時間自動清除Log。此方法的優點是無須人工干預,由SQL Server自動執行,並且一般不會出現Log溢滿的情況;缺點是只清除Log而不做備份。x0dx0ax0dx0a 2.手動清除法x0dx0ax0dx0a 執行命令「mp transaction」來清除Log。以下兩條命令都可以清除日誌:x0dx0ax0dx0amp transaction with truncate_onlyx0dx0amp transaction with no_log x0dx0ax0dx0a 通常刪除事務日誌中不活躍的部分可使用「mp transaction with trancate_only」命令,這條命令寫進事務日誌時,還要做必要的並發性檢查。SYBASE提供「mp transaction with no_log」來處理某些非常緊迫的情況,使用這條命令有很大的危險性,SQL Server會彈出一條警告信息。為了盡量確保資料庫的一致性,你應將它作為「最後一招」。x0dx0ax0dx0a 以上兩種方法只是清除日誌,而不做日誌備份,若想備份日誌,應執行「mp transaction database_name to mpdevice」命令。 x0dx0ax0dx0a清除後對資料庫沒有影響
❺ SQL SERVER資料庫日誌清空圖文教程
資料庫日誌不停瘋長 如何進行清空呢?這里以一台資料庫SQL SERVER 為例 日誌文件達到了 多個G一直無法清理 想了很多的辦法
比如下面這款 SqlServer日誌清除專家 可用於SQL Server SQL Server SQL Server 的各種版本的資料庫日誌的清除
這個工具一清就可以清干悶巧陵凈的 使您再也不用擔心資料庫日誌文件超過幾百兆或上GB級而煩惱
第二個方法就是採用了一個比較死的辦法 採用 分離 然後再刪除日誌文件再附加來生成一個新的日誌文件
切記在操作前先把SQL好好的備份一下
第一步 當然還是打開企業管理器了
寬頌在分螞戚離前最好是先把IIS之類的正在連接資料庫的程序關一下 要不然老半天也分離不了
也可以選擇一下 刪除鏈接 這樣可能分離會快一點
我們再定位到資料庫所在的硬碟位置
我們為了保除起見可以把 qq mdf備份一份 然後再將 qq _log ldf 這個文件重命一下名( G的文件實在是沒地方可以備份)
然後我們再來附加資料庫
附加到剛剛那個 mdf的文件 注意看下面會提示 ldf 文件找不到
不管他了 選擇 ldf這一分把他給刪掉
然後再確定 哈還原成功了 系統自動生成了一個新的 ldf 文件 KB
建議大家先用上面的那個工具去清一下 如果清不到再用這個死辦法來刪除日誌
最後再次提醒各位一定要注意備份噢!!
lishixin/Article/program/SQLServer/201311/22344
❻ SQL Server 快速清除日誌文件的方法
SQL Server 2000快速清除日誌文件的方法
SQL Server 2000 資料庫日誌太大!
如何清理SQL Server 2000的日誌呢?
如何壓縮SQL Server 2000的日誌呢?
如何讓SQL Server 2000的日誌變小呢?
據我所知,辦法有很多很多,總結起來算有3類吧:
1、點幾下滑鼠,用SQL Server 2000管理工具中的企業管理器即可實現,待會兒詳解;
2、用SQL語句,在SQL Server 2000管理工具中的查詢分析器可以實現,此法高級人士喜歡用;
3、用第三方工具實現,原理嘛,我覺得應該是用SQL語句來實現的,這方法好,簡單易用,網上不乏精品工具,待會兒介紹一款。
一、現在我們詳細描述一下如何用企業管理器清理SQL 2000的日誌:
1、打開企業管理器,右擊要處理的資料庫--》屬性--》選項--》故障還原,選「簡單」--》確定。如圖:
2、右擊要處理的資料庫--》所有任務--》收縮資料庫--》什麼也不動,默認第一個是0%,其它兩個未選中,點確定--》如果您以前資料庫日誌文件大於1M那麼現在再看看,是不是只有1M了呢。
3、操作完後--》按第一步,把「故障還原」,選「完全」,傳說中SQL Server 2000 有自動還原功能,說是如果非法關機等因素造成數據丟失可以自動回滾,另外可以用程序來實現操作回滾,所以最好是讓故障還原是「完全」。
4、這樣便實現了「SQL Server 2000 資料庫日誌太大!如何管理,清除,變小,壓縮它」中的清除,變小,壓縮了,至於怎麼管理,自己看著辦吧,我一般只會用到這些,再有深入研究的話我會寫上來的`。
二、現在我們介紹用第三方SQL Server 日誌清理工具來清理日誌,簡單易用高效,推薦用這個方法。
我喜歡用 SqlServer日誌清除專家 v3.5 來實現這個功能。界面如下:
資料庫那裡一般會將整個伺服器的資料庫名都列舉出來,需要選擇為自己賬戶能管理到的那個,我這里DB_iszip賬戶能管理的是 iszip ,選擇好之後,點「清除日誌」按鈕,然後SQL Server 2000的日誌就被清理好了,此時你去伺服器看你資料庫日誌佔用空間就只有1M了。
;