刪除sqlserver數(shù)據(jù)庫日志和沒有日志的數(shù)據(jù)庫恢復辦法
一、刪除數(shù)據(jù)庫日志文件的方法
你曾經(jīng)有在執(zhí)行SQL的時候,數(shù)據(jù)庫報事務日志已滿,然后執(zhí)行報錯。然后糾結于怎么刪除數(shù)據(jù)庫日志,搗鼓半天嗎,現(xiàn)在就提供兩種刪除日志文件的方法,希望能夠幫到你!
方法一:手工操作
1.數(shù)據(jù)庫->右鍵->屬性->選項-恢復模式->由完成切換成簡單
2.數(shù)據(jù)庫->右鍵->任務->收縮-文件->由完成切換成簡單->文件類型->日志->將文件收縮到





方法二:存儲過程代替手工操作
--日志文件收縮至多少M
DECLARE @DBLogSise AS INT
SET @DBLogSise=0
--查詢出數(shù)據(jù)庫對應的日志文件名稱
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ù)據(jù)庫恢復模式為簡單
ALTER DATABASE ['+@strDBName+'] SET RECOVERY SIMPLE;
--收縮日志文件
DBCC SHRINKFILE ('''+@strLogName+''' , '+CONVERT(VARCHAR(20),@DBLogSise)+');
--恢復數(shù)據(jù)庫還原模式為完整
ALTER DATABASE ['+@strDBName+'] SET RECOVERY FULL '
exec(@strSQL)
1.在數(shù)據(jù)庫中執(zhí)行上面的存儲過程
2.然后再執(zhí)行 EXEC dbo.usp_p_delDBLog @DBLogSise = 0 (收縮至多少M)
二、沒有日志文件的數(shù)據(jù)庫恢復方法
今天客戶那邊執(zhí)行SQL報錯,經(jīng)查看是客戶服務器數(shù)據(jù)庫磁盤已被全部用完,日志文件達到500GB的程度,后來由于我的錯誤操作導致日志文件(.ldf)被刪除,后來附加.mdf文件老是說沒有日志文件附加不成功,后來經(jīng)過一番折騰終于解決了,下面分享一下!
操作步驟
1.新建同名的數(shù)據(jù)庫文件
2.暫停SQLSetver服務
3.將原先的mdf文件,覆蓋新建的數(shù)據(jù)庫,刪除新數(shù)據(jù)庫的ldf文件
4.重新啟動SQLSetver服務 ,這時看到的數(shù)據(jù)庫是這個樣子的,打不開

5.執(zhí)行以下SQL語句
--1.設置為緊急狀態(tài)
alter database 數(shù)據(jù)庫名稱 set emergency
--2.設置為單用戶模式
alter database 數(shù)據(jù)庫名稱 set single_user
--3.檢查并重建日志文件
dbcc checkdb('數(shù)據(jù)庫名稱',REPAIR_ALLOW_DATA_LOSS)
--4.第3步操作如果有錯誤提示,運行第4步,沒有錯誤則跳過
dbcc checkdb('數(shù)據(jù)庫名稱',REPAIR_REBUILD)
--5.恢復成多用戶模式
alter database 數(shù)據(jù)庫名稱 set multi_user
6.至此會重新生成改庫的日志文件,整個過程完成
或者也可以采用手動附加(本方法參考@碼道程工)

到此這篇關于刪除sqlserver數(shù)據(jù)庫日志和沒有日志的數(shù)據(jù)庫恢復辦法的文章就介紹到這了,更多相關刪除sqlserver數(shù)據(jù)庫日志和無日志的恢復辦法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQL Server臨時表的正確刪除方式(sql server 刪除臨時表)
臨時表與一般的表不同,它是保存到tempDb表中。臨時表的表名與你所建的表名也不一樣,因為他要為不同人的相同操作創(chuàng)建不同的臨時表。下文將為您分別示例正確和錯誤的刪除操作,感興趣的朋友一起看看吧2023-02-02
SQL Server 數(shù)據(jù)頁緩沖區(qū)的內(nèi)存瓶頸分析
數(shù)據(jù)頁緩存是SQL Server的內(nèi)存使用主要的方面,也是占用量最大的部分。在一個穩(wěn)定的DB Server上,這部分內(nèi)存使用會相對較穩(wěn)定2012-08-08
sqlserver中觸發(fā)器+游標操作實現(xiàn)
sqlserver中觸發(fā)器+游標操作實現(xiàn),需要的朋友可以參考下2012-11-11
SQL Server兩表數(shù)據(jù)同步的多種方法詳解
這篇文章主要介紹了SQL Server兩表數(shù)據(jù)同步的多種方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
CentOS 9 Stream 上如何安裝 SQL Server&nb
在CentOS9Stream上安裝SQLServer2019,首先需要添加Microsoft的SQLServer存儲庫,然后使用yum命令安裝SQLServer軟件包,安裝完成后,通過運行特定命令配置SQLServer實例,本文給大家CentOS9 Stream如何安裝 SQL Server 2019,感興趣的朋友一起看看吧2024-11-11
sqlserver數(shù)據(jù)庫使用存儲過程和dbmail實現(xiàn)定時發(fā)送郵件
這篇文章主要介紹了sqlserver數(shù)據(jù)庫存儲過程和Job實現(xiàn)定時從數(shù)據(jù)庫發(fā)送郵件的功能,大家參考使用吧2014-01-01

