刪除sqlserver數(shù)據(jù)庫(kù)日志和沒(méi)有日志的數(shù)據(jù)庫(kù)恢復(fù)辦法
一、刪除數(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)單->文件類型->日志->將文件收縮到
方法二:存儲(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))
二、沒(méi)有日志文件的數(shù)據(jù)庫(kù)恢復(fù)方法
今天客戶那邊執(zhí)行SQL報(bào)錯(cuò),經(jīng)查看是客戶服務(wù)器數(shù)據(jù)庫(kù)磁盤已被全部用完,日志文件達(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.設(shè)置為緊急狀態(tài) alter database 數(shù)據(jù)庫(kù)名稱 set emergency --2.設(shè)置為單用戶模式 alter database 數(shù)據(jù)庫(kù)名稱 set single_user --3.檢查并重建日志文件 dbcc checkdb('數(shù)據(jù)庫(kù)名稱',REPAIR_ALLOW_DATA_LOSS) --4.第3步操作如果有錯(cuò)誤提示,運(yùn)行第4步,沒(méi)有錯(cuò)誤則跳過(guò) dbcc checkdb('數(shù)據(jù)庫(kù)名稱',REPAIR_REBUILD) --5.恢復(fù)成多用戶模式 alter database 數(shù)據(jù)庫(kù)名稱 set multi_user
6.至此會(huì)重新生成改庫(kù)的日志文件,整個(gè)過(guò)程完成
或者也可以采用手動(dòng)附加(本方法參考@碼道程工)
到此這篇關(guān)于刪除sqlserver數(shù)據(jù)庫(kù)日志和沒(méi)有日志的數(shù)據(jù)庫(kù)恢復(fù)辦法的文章就介紹到這了,更多相關(guān)刪除sqlserver數(shù)據(jù)庫(kù)日志和無(wú)日志的恢復(fù)辦法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server臨時(shí)表的正確刪除方式(sql server 刪除臨時(shí)表)
臨時(shí)表與一般的表不同,它是保存到tempDb表中。臨時(shí)表的表名與你所建的表名也不一樣,因?yàn)樗獮椴煌说南嗤僮鲃?chuàng)建不同的臨時(shí)表。下文將為您分別示例正確和錯(cuò)誤的刪除操作,感興趣的朋友一起看看吧2023-02-02SQL Server 數(shù)據(jù)頁(yè)緩沖區(qū)的內(nèi)存瓶頸分析
數(shù)據(jù)頁(yè)緩存是SQL Server的內(nèi)存使用主要的方面,也是占用量最大的部分。在一個(gè)穩(wěn)定的DB Server上,這部分內(nèi)存使用會(huì)相對(duì)較穩(wěn)定2012-08-08sqlserver中觸發(fā)器+游標(biāo)操作實(shí)現(xiàn)
sqlserver中觸發(fā)器+游標(biāo)操作實(shí)現(xiàn),需要的朋友可以參考下2012-11-11sqlServer實(shí)現(xiàn)分頁(yè)查詢的三種方式
在SqlServer中分頁(yè)查詢是經(jīng)常用到的查詢語(yǔ)句,一個(gè)好的分頁(yè)查詢語(yǔ)句,不能將代碼省略,下面這篇文章主要給大家介紹了關(guān)于sqlServer實(shí)現(xiàn)分頁(yè)查詢的三種方式,需要的朋友可以參考下2023-03-03SQL學(xué)習(xí)筆記三 select語(yǔ)句的各種形式小結(jié)
SQL學(xué)習(xí)筆記三 select語(yǔ)句的各種形式小結(jié),大家可以查看下select命名的使用。2011-08-08SQL Server兩表數(shù)據(jù)同步的多種方法詳解
這篇文章主要介紹了SQL Server兩表數(shù)據(jù)同步的多種方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06CentOS 9 Stream 上如何安裝 SQL Server&nb
在CentOS9Stream上安裝SQLServer2019,首先需要添加Microsoft的SQLServer存儲(chǔ)庫(kù),然后使用yum命令安裝SQLServer軟件包,安裝完成后,通過(guò)運(yùn)行特定命令配置SQLServer實(shí)例,本文給大家CentOS9 Stream如何安裝 SQL Server 2019,感興趣的朋友一起看看吧2024-11-11sqlserver數(shù)據(jù)庫(kù)使用存儲(chǔ)過(guò)程和dbmail實(shí)現(xiàn)定時(shí)發(fā)送郵件
這篇文章主要介紹了sqlserver數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程和Job實(shí)現(xiàn)定時(shí)從數(shù)據(jù)庫(kù)發(fā)送郵件的功能,大家參考使用吧2014-01-01