這篇文章主要介紹了刪除sqlserver數據庫日志和沒有日志的數據庫恢復辦法,需要的朋友可以參考下。
一、刪除數據庫日志文件的方法
你曾經有在執行SQL的時候,數據庫報事務日志已滿,然后執行報錯。然后糾結于怎么刪除數據庫日志,搗鼓半天嗎,現在就提供兩種刪除日志文件的方法,希望能夠幫到你!
方法一:手工操作
1.數據庫->右鍵->屬性->選項-恢復模式->由完成切換成簡單
2.數據庫->右鍵->任務->收縮-文件->由完成切換成簡單->文件類型->日志->將文件收縮到
方法二:存儲過程代替手工操作
代碼如下:
--日志文件收縮至多少M
DECLARE@DBLogSiseASINT
SET@DBLogSise=0
--查詢出數據庫對應的日志文件名稱
DECLARE@strDBNameASNVARCHAR(500)DECLARE@strLogNameASNVARCHAR(500)DECLARE@strSQLASVARCHAR(1000)
SELECT
@strLogName=B.name,@strDBName=A.nameFROMmaster.sys.databasesASAINNERJOINsys.master_filesASBONA.database_id=B.database_idWHEREA.database_id=DB_ID()
SET@strSQL='
--設置數據庫恢復模式為簡單
ALTERDATABASE['+@strDBName+']SETRECOVERYSIMPLE;
--收縮日志文件
DBCCSHRINKFILE('''+@strLogName+''','+CONVERT(VARCHAR(20),@DBLogSise)+');
--恢復數據庫還原模式為完整
ALTERDATABASE['+@strDBName+']SETRECOVERYFULL'
exec(@strSQL)
1.在數據庫中執行上面的存儲過程
2.然后再執行EXECdbo.usp_p_delDBLog@DBLogSise=0(收縮至多少M)
二、沒有日志文件的數據庫恢復方法
今天客戶那邊執行SQL報錯,經查看是客戶服務器數據庫磁盤已被全部用完,日志文件達到500GB的程度,后來由于我的錯誤操作導致日志文件(.ldf)被刪除,后來附加.mdf文件老是說沒有日志文件附加不成功,后來經過一番折騰終于解決了,下面分享一下!
操作步驟
1.新建同名的數據庫文件
2.暫停SQLSetver服務
3.將原先的mdf文件,覆蓋新建的數據庫,刪除新數據庫的ldf文件
4.重新啟動SQLSetver服務,這時看到的數據庫是這個樣子的,打不開
5.執行以下SQL語句
代碼如下:
--1.設置為緊急狀態
alterdatabase數據庫名稱setemergency
--2.設置為單用戶模式
alterdatabase數據庫名稱setsingle_user
--3.檢查并重建日志文件
dbcccheckdb('數據庫名稱',REPAIR_ALLOW_DATA_LOSS)
--4.第3步操作如果有錯誤提示,運行第4步,沒有錯誤則跳過
dbcccheckdb('數據庫名稱',REPAIR_REBUILD)
--5.恢復成多用戶模式
alterdatabase數據庫名稱setmulti_user
6.至此會重新生成改庫的日志文件,整個過程完成或者也可以采用手動附加
更多信息請查看IT技術專欄