如何清除數(shù)據(jù)庫日志
茫崖網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
1
打開查詢分析器,輸入命令DUMP TRANSACTION 數(shù)據(jù)庫名 WITH NO_LOG
2
再打開企業(yè)管理器–右鍵你要壓縮的數(shù)據(jù)庫–所有任務(wù)–收縮數(shù)據(jù)庫–收縮文件–選擇日志文件–在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了。
END
清除Log有兩種方法
自動(dòng)清除法:
開放數(shù)據(jù)庫選項(xiàng) Trunc Log on Chkpt,使數(shù)據(jù)庫系統(tǒng)每隔一段時(shí)間自動(dòng)清除Log。此方法的優(yōu)點(diǎn)是無須人工干預(yù),由SQL Server自動(dòng)執(zhí)行,并且一般不會(huì)出現(xiàn)Log溢滿的情況;缺點(diǎn)是只清除Log而不做備份。
手動(dòng)清除法
執(zhí)行命令“dump transaction”來清除Log。以下兩條命令都可以清除日志:
dump transaction with truncate_onlydump transaction with no_log
通常刪除事務(wù)日志中不活躍的部分可使用“dump transaction with trancate_only”命令,這條命令寫進(jìn)事務(wù)日志時(shí),還要做必要的并發(fā)性檢查。SYBASE提供“dump transaction with no_log”來處理某些非常緊迫的情況,使用這條命令有很大的危險(xiǎn)性,SQL Server會(huì)彈出一條警告信息。為了盡量確保數(shù)據(jù)庫的一致性,你應(yīng)將它 作為“最后一招”
1、確定SQL數(shù)據(jù)庫的安裝路徑與所用的SQL數(shù)據(jù)庫名稱。2、點(diǎn)擊開始--程序--MicrosoftSQLServer--查詢分析器--確定,進(jìn)入軟件里,點(diǎn)擊菜單幫助--Transact-sql幫助(S)--索引--輸入(sp_attach_single_file_db),在右邊對(duì)話框里找到以下的命令或者在空白處直接輸入以下的命令:EXECsp_detach_db@dbname='pubs'returnEXECsp_attach_single_file_db@dbname='pubs',@physname='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf'注意:return是加入的命令語名,將數(shù)據(jù)庫(*.LDF與*.MDF)分離,再將數(shù)據(jù)庫名改回所要選的,即是pubs改為J2002。即是:EXECsp_detach_db@dbname='J2002'returnEXECsp_attach_single_file_db@dbname='J2002',@physname='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\J2002.mdf'3、輸入命令后,點(diǎn)擊菜單查詢--執(zhí)行,下面對(duì)話框出現(xiàn)命令"命令已成功完成"。4、刪除命令(EXECsp_detach_db@dbname='J2002'return),進(jìn)入安裝SQL數(shù)據(jù)庫路徑里將J2002.ldf文件重命名。5、接著第3點(diǎn)開始,點(diǎn)擊菜單查詢--執(zhí)行,下面對(duì)話框出現(xiàn)命令"設(shè)備激活錯(cuò)誤。物理文件名'C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\J200188.ldf'可能有誤。已創(chuàng)建名為'c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\j200188_log.LDF'的新日志文件"。
方法1:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--no_log和truncate_only是在這里是同義的,隨便執(zhí)行哪一句都可以
第二步:
1.收縮特定數(shù)據(jù)庫的所有數(shù)據(jù)和日志文件,執(zhí)行
dbcc
shrinkdatabase
(database_name,[,target_percent])--database_name是要收縮的數(shù)據(jù)庫名稱;target_percent是數(shù)據(jù)庫收縮后的數(shù)據(jù)庫文件中所要的剩余可用空間百分比
2.收縮一次一個(gè)特定數(shù)據(jù)庫中的數(shù)據(jù)或日志文件,執(zhí)行
dbcc
shrinkfile(file_id,[,target_size])
--file_id是要收縮的文件的標(biāo)識(shí)
(ID)
號(hào),若要獲得文件
ID,請(qǐng)使用
FILE_ID
函數(shù)或在當(dāng)前數(shù)據(jù)庫中搜索
sysfiles;target_size是用兆字節(jié)表示的所要的文件大?。ㄓ谜麛?shù)表示)。如果沒有指定,dbcc
shrinkfile
將文件大小減少到默認(rèn)文件大小
兩個(gè)dbcc都可以帶上參數(shù)notruncate或truncateonly,具體意思看幫助。
方法2
(這個(gè)方法在sqlserver2000的環(huán)境下做一般能成功,在sqlserver7及以下版本就不一定了):
第一步:
先備份整個(gè)數(shù)據(jù)庫以備不測(cè)
第二步:
備份結(jié)束后,在Query
Analyzer中執(zhí)行如下的語句:
exec
sp_detach_db
yourDBName,true
--卸除這個(gè)DB在MSSQL中的注冊(cè)信息
第三步:
到日志的物理文件所在的目錄中去刪除該日志文件或者將該日志文件移出該目錄
第四步:
在Query
Analyzer中執(zhí)行如下的語句:
exec
sp_attach_single_file_db
yourDBName,'d:\mssql7\data\yourDBName_data.mdf'
--以單文件的方式注冊(cè)該DB,如果成功則MSSQL將自動(dòng)為這個(gè)DB生成一個(gè)500K的日志文件。
以上方法在清除log日志中均有效。
但,能否讓sql
server
不產(chǎn)生log日志呢?以上方法好像均無效。
我這兒正好有個(gè)case:
我客戶的sql
server每天都會(huì)產(chǎn)生4,500M的log日志,每天都清除一下,非常不便。有沒有辦法實(shí)現(xiàn)不產(chǎn)生log日志呢?
我分析了一下客戶產(chǎn)生log日志的原因,并且做了相應(yīng)測(cè)試。
客戶是每天將數(shù)據(jù)庫清空,從總系統(tǒng)中將數(shù)據(jù)導(dǎo)入到sql
server里。我感決sqlserver在插入時(shí)產(chǎn)生log不大,在delete整個(gè)庫時(shí)產(chǎn)生log極大。
比如:
SELECT
*
into
test_2
from
b_bgxx
共45000條記錄,產(chǎn)生十幾M
log,如果
delete
from
test_2
產(chǎn)生80多M
log
,這明顯存在問題。
雖然可以換成:
truncate
table
test_2
但我還是希望能找到不產(chǎn)生log的方法。就如oracle不產(chǎn)生歸檔一樣。
當(dāng)前題目:sqlserver刪日志,sqlserver數(shù)據(jù)庫刪除日志
本文鏈接:http://www.rwnh.cn/article8/dsdheip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、標(biāo)簽優(yōu)化、網(wǎng)站收錄、面包屑導(dǎo)航、云服務(wù)器、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)