西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → 刪除sqlserver數(shù)據(jù)庫(kù)日志文件和附加沒(méi)有日志文件的數(shù)據(jù)庫(kù)解決辦法

刪除sqlserver數(shù)據(jù)庫(kù)日志文件和附加沒(méi)有日志文件的數(shù)據(jù)庫(kù)解決辦法

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2014/6/4 10:21:25字體大小:A-A+

作者:西西點(diǎn)擊:721次評(píng)論:0次標(biāo)簽: sqlserver

  • 類(lèi)型:數(shù)據(jù)庫(kù)類(lèi)大小:594KB語(yǔ)言:中文 評(píng)分:7.7
  • 標(biāo)簽:
立即下載

刪除數(shù)據(jù)庫(kù)日志文件的方法

你曾經(jīng)有在執(zhí)行SQL的時(shí)候,數(shù)據(jù)庫(kù)報(bào)事務(wù)日志已滿,然后執(zhí)行報(bào)錯(cuò)。然后糾結(jié)于怎么刪除數(shù)據(jù)庫(kù)日志,搗鼓半天嗎,現(xiàn)在就提供兩種刪除日志文件的方法,希望能夠幫到你!

方法一:手工操作

1.數(shù)據(jù)庫(kù)->右鍵->屬性->選項(xiàng)-恢復(fù)模式->由完成切換成簡(jiǎn)單

2.數(shù)據(jù)庫(kù)->右鍵->任務(wù)->收縮-文件->由完成切換成簡(jiǎn)單->文件類(lèi)型->日志->將文件收縮到

方法二:存儲(chǔ)過(guò)程代替手工操作


    --日志文件收縮至多少M(fèi)
    DECLARE @DBLogSise AS INT
    SET @DBLogSise=0
    --查詢出數(shù)據(jù)庫(kù)對(duì)應(yīng)的日志文件名稱
    DECLARE @strDBName AS NVARCHAR(500)    DECLARE @strLogName AS NVARCHAR(500)    DECLARE @strSQL AS VARCHAR(1000)    
    SELECT 
        @strLogName=B.name,        @strDBName=A.name    FROM master.sys.databases AS A    INNER JOIN sys.master_files AS B    ON A.database_id = B.database_id    WHERE A.database_id=DB_ID() 
        
    SET @strSQL='
    --設(shè)置數(shù)據(jù)庫(kù)恢復(fù)模式為簡(jiǎn)單
    ALTER DATABASE ['+@strDBName+'] SET RECOVERY SIMPLE;
    --收縮日志文件
    DBCC SHRINKFILE ('''+@strLogName+''' , '+CONVERT(VARCHAR(20),@DBLogSise)+');
    --恢復(fù)數(shù)據(jù)庫(kù)還原模式為完整
    ALTER DATABASE ['+@strDBName+'] SET RECOVERY FULL '
    exec(@strSQL)



1.在數(shù)據(jù)庫(kù)中執(zhí)行上面的存儲(chǔ)過(guò)程

2.然后再執(zhí)行 EXEC dbo.usp_p_delDBLog @DBLogSise = 0 (收縮至多少M(fèi))

回到頂部

示例存儲(chǔ)過(guò)程下載

usp_p_delDBLog.sql

附加沒(méi)有日志文件的數(shù)據(jù)庫(kù)方法

今天客戶那邊執(zhí)行SQL報(bào)錯(cuò),經(jīng)查看是客戶服務(wù)器數(shù)據(jù)庫(kù)磁盤(pán)已被全部用完,日志文件達(dá)到500GB的程度,后來(lái)由于我的錯(cuò)誤操作導(dǎo)致日志文件(.ldf)被刪除,后來(lái)附加.mdf文件老是說(shuō)沒(méi)有日志文件附加不成功,后來(lái)經(jīng)過(guò)一番折騰終于解決了,下面分享一下!

操作步驟

1.新建同名的數(shù)據(jù)庫(kù)文件

2.暫停SQLSetver服務(wù)

3.將原先的mdf文件,覆蓋新建的數(shù)據(jù)庫(kù),刪除新數(shù)據(jù)庫(kù)的ldf文件

4.重新啟動(dòng)SQLSetver服務(wù) ,這時(shí)看到的數(shù)據(jù)庫(kù)是這個(gè)樣子的,打不開(kāi)

  

5.執(zhí)行以下SQL語(yǔ)句


 1 --1.設(shè)置為緊急狀態(tài) 2 alter database 數(shù)據(jù)庫(kù)名稱 set emergency 3 --2.設(shè)置為單用戶模式 4 alter database 數(shù)據(jù)庫(kù)名稱 set single_user 5 --3.檢查并重建日志文件 6 dbcc checkdb('數(shù)據(jù)庫(kù)名稱',REPAIR_ALLOW_DATA_LOSS) 7 --4.第3步操作如果有錯(cuò)誤提示,運(yùn)行第4步,沒(méi)有錯(cuò)誤則跳過(guò) 8 dbcc checkdb('數(shù)據(jù)庫(kù)名稱',REPAIR_REBUILD) 9 --5.恢復(fù)成多用戶模式10 alter database 數(shù)據(jù)庫(kù)名稱 set multi_user


6.至此會(huì)重新生成改庫(kù)的日志文件,整個(gè)過(guò)程完成

  或者也可以采用手動(dòng)附加(本方法參考@碼道程工)


    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)