共計 1506 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關刪除 sqlserver 數據庫日志和沒有日志的數據庫的恢復辦法,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
一、刪除數據庫日志文件的方法
你曾經有在執行 SQL 的時候,數據庫報事務日志已滿,然后執行報錯。然后糾結于怎么刪除數據庫日志,搗鼓半天嗎,現在就提供兩種刪除日志文件的方法,希望能夠幫到你!
方法一:手工操作 1. 數據庫 - 右鍵 - 屬性 - 選項 - 恢復模式 - 由完成切換成簡單 2. 數據庫 - 右鍵 - 任務 - 收縮 - 文件 - 由完成切換成簡單 - 文件類型 - 日志 - 將文件收縮到
方法二:存儲過程代替手工操作
復制代碼 代碼如下:
– 日志文件收縮至多少 M DECLARE @DBLogSise AS INT SET @DBLogSise=0 – 查詢出數據庫對應的日志文件名稱 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= – 設置數據庫恢復模式為簡單 ALTER DATABASE [ +@strDBName+] SET RECOVERY SIMPLE; – 收縮日志文件 DBCC SHRINKFILE (+@strLogName+ , +CONVERT(VARCHAR(20),@DBLogSise)+ – 恢復數據庫還原模式為完整 ALTER DATABASE [+@strDBName+] SET RECOVERY FULL exec(@strSQL)
1. 在數據庫中執行上面的存儲過程 2. 然后再執行 EXEC dbo.usp_p_delDBLog @DBLogSise = 0 (收縮至多少 M)二、沒有日志文件的數據庫恢復方法
今天客戶那邊執行 SQL 報錯,經查看是客戶服務器數據庫磁盤已被全部用完,日志文件達到 500GB 的程度,后來由于我的錯誤操作導致日志文件 (.ldf) 被刪除,后來附加.mdf 文件老是說沒有日志文件附加不成功,后來經過一番折騰終于解決了,下面分享一下!
操作步驟
1. 新建同名的數據庫文件 2. 暫停 SQLSetver 服務 3. 將原先的 mdf 文件,覆蓋新建的數據庫,刪除新數據庫的 ldf 文件 4. 重新啟動 SQLSetver 服務,這時看到的數據庫是這個樣子的,打不開
5. 執行以下 SQL 語句復制代碼 代碼如下:
–1. 設置為緊急狀態 alter database 數據庫名稱 set emergency–2. 設置為單用戶模式 alter database 數據庫名稱 set single_user–3. 檢查并重建日志文件 dbcc checkdb(數據庫名稱 ,REPAIR_ALLOW_DATA_LOSS)–4. 第 3 步操作如果有錯誤提示,運行第 4 步,沒有錯誤則跳過 dbcc checkdb(數據庫名稱 ,REPAIR_REBUILD)–5. 恢復成多用戶模式 alter database 數據庫名稱 set multi_user
6. 至此會重新生成改庫的日志文件,整個過程完成
或者也可以采用手動附加
關于刪除 sqlserver 數據庫日志和沒有日志的數據庫的恢復辦法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。