SQL 日誌清除技巧

2021-05-02 09:29:39 字數 2828 閱讀 9151

sql server日誌清空方法

在查詢分析器中順序執行以下三步,其中 databasename 為你的資料庫檔名

1.清空日誌:dump transaction databasename with no_log

2.截斷事務日誌:backup log databasename with no_log

3.收縮資料庫:dbcc shrinkdatabase(databasename)

sql server日誌清空方法

一種方法:清空日誌。

1.開啟查詢分析器,輸入命令 dump transaction 資料庫名 with no_log

2.再開啟企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案--選擇日誌檔案--在收縮方式裡選擇收縮至xxm,這裡會給出乙個允許收縮到的最小m數,直接輸入這個數,確定就可以了。

方法二:

清空日誌:

------------------------------------------

backup log 庫名 with no_log

dbcc shrinkfile( '日誌檔名 ',新的大小數值型如1)

日誌檔名是這樣的:

select name from sysfiles

如: mastlog

---------------------------------------------

backup log databasename

with truncate_only

dbcc shrinkdatabase (databasename,size)

若每天有whole back up 的話可以設定一job,

每隔三天或乙個星期清空一次

這樣的話日誌就不會長大了哦

-------------------------------------

1: 刪除log

1:分離資料庫

2:刪除log檔案

3:附加資料庫

此法生成新的log,大小只有500多k

再將此資料庫設定自動收縮

2:清空日誌

dump transaction 庫名 with no_log

再: 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮檔案--選擇日誌檔案--在收縮方式裡選擇收縮至xxm,這裡會給出乙個允許收縮到的最小m數,直接輸入這個數,確定就可以了

方法三:

第一步:

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,具體意思看幫助。

方法四:

(這個方法在sqlserver2000的環境下做一般能成功,在sqlserver7及以下版本就不一定了):

第一步:

先備份整個資料庫以備不測

第二步:

備份結束後,在query analyzer中執行如下的語句:

exec sp_detach_db yourdbname,true --卸除這個db在mssql中的註冊資訊

第三步:

到日誌的物理檔案所在的目錄中去刪除該日誌檔案或者將該日誌檔案移出該目錄

第四步:

在query analyzer中執行如下的語句:

exec sp_attach_single_file_db yourdbname, 'd:/mssql7/data/yourdbname_data.mdf '

--以單檔案的方式註冊該db,如果成功則mssql將自動為這個db生成乙個500k的日誌檔案。

以上方法在清除log日誌中均有效。

但,能否讓sql server 不產生log日誌呢?以上方法好像均無效。

我這兒正好有個case:

我客戶的sql server每天都會產生4,500m的log日誌,每天都清除一下,非常不便。有沒有辦法實現不產生log日誌呢?

我分析了一下客戶產生log日誌的原因,並且做了相應測試。

客戶是每天將資料庫清空,從總系統中將資料匯入到sql server裡。我感決sqlserver在插入時產生log不大,在delete整個庫時產生log極大。

比如:

select * into test_2 from b_bgxx

共45000條記錄,產生十幾m log,如果

delete from test_2

產生80多m log ,這明顯存在問題。

雖然可以換成:

truncate table test_2

但我還是希望能找到不產生log的方法。就如oracle不產生歸檔一樣。

Sql清除日誌

問題補充 sql的日誌可以清除嗎?方法2 6都可以 1 收縮資料庫檔案 如果不壓縮,資料庫的檔案不會減小 企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮資料庫 收縮檔案 選擇日誌檔案 在收縮方式裡選擇收縮至xxm,這裡會給出乙個允許收縮到的最小m數,直接輸入這個數,確定就可以了 選擇資料檔案 在收...

清除Sql日誌

今天 剛上班不久,業務部就反應 的資料從凌晨兩點後就沒有更新了 初步估計是脆弱的資料庫伺服器又出問題了 果然,剛登陸上資料庫伺服器,系統就彈出提示,xx資料庫日誌已經滿,請備份資料庫日誌.這個想來正常,昨天檢視該資料庫日誌檔案的時候已經是6g多了,只是沒想到來得這麼快,廢話少說,馬上動手 根據以往的...

清除sql日誌

日誌檔案滿而造成sql資料庫無法寫入檔案時,可用兩種方法 一種方法 清空日誌。1 開啟查詢分析器,輸入命令 dump transaction 資料庫名 with no log 2.再開啟企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮資料庫 收縮檔案 選擇日誌檔案 在收縮方式裡選擇收縮至xxm,這裡...