SQL SERVER 2008數(shù)據(jù)庫日志文件收縮的方法
最近公司的數(shù)據(jù)庫隨著業(yè)務(wù)量的增多,日志文件巨大(超過300G),造成磁盤空間不夠用,進(jìn)而后來的訪問數(shù)據(jù)庫請求無法訪問。
網(wǎng)上類似的方法也很多,但不可行,如下是我實踐過,可行的,將日志文件收縮至任意指定大小的方法:
第一步: 在SQL SERVER Management Studio 中右擊數(shù)據(jù)庫選擇“屬性”---》“選項”,將恢復(fù)模式由默認(rèn)的“完整”改為“簡單”。

第二步:再次右鍵選擇數(shù)據(jù)庫的“任務(wù)”--》“收縮”---》“文件”菜單,進(jìn)入收縮文件頁面,將(要收縮的)文件類型選定為“日志”, 將頁面下面的“收縮操作”單選框里選擇“在釋放未使用的空間前重新組織頁,將文件收縮到:”,然后填寫合適的收縮后的日志文件大小。
最后點擊這個頁面下面的“確定”按鈕,以執(zhí)行收縮文件(日志)操作。
執(zhí)行完畢后,用戶可以查到到的確該日志文件收縮到指定的大小了。


將文件收縮到 0 即可。瞬間就ok了,比用命令快多了,對于36g的日志也很快。
第三步:在SQL SERVER Management Studio 中右擊數(shù)據(jù)庫選擇“屬性”---》“選項”,將恢復(fù)模式由默認(rèn)的“簡單”改為“完整”。
下面是最常用的方法一
USE [master] GO ALTER DATABASE 庫名 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 庫名 SET RECOVERY SIMPLE --簡單模式 GO USE 庫名 GO DBCC SHRINKFILE (N'庫名_log' , 11, TRUNCATEONLY) GO --這里的DNName_Log 如果不知道在sys.database_files里是什么名字的話,可以用以下注釋的語句進(jìn)行查詢 --USE 庫名 --GO --SELECT file_id,name FROM sys.database_files; --GO USE [master] GO ALTER DATABASE SCDMS SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE SCDMS SET RECOVERY FULL --還原為完全模式 GO
一般來說上面的sql對于日志2個G內(nèi)速度還可以,如果不行請參考下面的步驟
1:然后在網(wǎng)上查找命令,找到日志文件類型為 REPLICATION 即發(fā)布狀態(tài)
2:又查找到執(zhí)行命令 ,該命令顯示很多status為2的日志,即沒有提交的。
DBCC LOGINFO('數(shù)據(jù)庫名稱')
3:直接選擇我之前創(chuàng)建的發(fā)布,提示以下錯誤:
sqlserver無法作為數(shù)據(jù)庫主體執(zhí)行,因為主體 "dbo" 不存在...
查找到以下命令,為用戶添加數(shù)據(jù)庫角色時提示已經(jīng)存在此帳號請查看數(shù)據(jù)庫下是否已經(jīng)存在該帳號并刪除重新授權(quán)
USE 庫名
EXEC sp_changedbowner 'sa'
4:然后再刪除發(fā)布和訂閱即成功。最后再執(zhí)行第一步的SQL命令,日志文件縮小成功。
方法二、先設(shè)置恢復(fù)模式為“簡單恢復(fù)”模式,再收縮:
USE BigData ; GO ALTER DATABASE BigData SET RECOVERY SIMPLE;--設(shè)置簡單恢復(fù)模式 GO DBCC SHRINKFILE (BigData_Log, 1); GO ALTER DATABASE BigData SET RECOVERY FULL;--恢復(fù)為原模式 GO
方法三、
USE BigData; GO BACKUP LOG DATABASENAME TO DISK='d:\test.bak' -- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE (Bigdata_Log, 1); GO
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SQL Server 2008登錄錯誤:無法連接到(local)解決方法
在一些朋友安裝完SQL Server 2008之后大多會遇到連接出錯的問題比如:SQL Server 2008登錄錯誤:無法連接到(local)等等相關(guān)問題,本文將詳細(xì)介紹解決方法,需要的朋友可以參考下2012-12-12
SQL Server2008中刪除重復(fù)記錄的方法分享
在Database中可能由于某種原因如用戶輸入,導(dǎo)入數(shù)據(jù)失敗等 導(dǎo)致了重復(fù)記錄. 如果你沒有用主鍵,約束,或來其它機(jī)制實現(xiàn)數(shù)據(jù)完整性,那最后總是重復(fù)記錄在你的數(shù)據(jù)庫中.2011-10-10
SQL2008 附加數(shù)據(jù)庫提示5120錯誤解決方法
有些朋友在操作sql2008數(shù)據(jù)庫時會提示5120錯誤,本文將介紹詳細(xì)的解決方法,有需要的朋友可以參考下2012-12-12
SQL SERVER 2008 無法附加數(shù)據(jù)庫的解決方法
重裝SQL了之后,想把以前的數(shù)據(jù)庫附加上去,但是附加不了,錯誤提示見上2011-12-12
SQL Server2008 Order by在union子句不可直接使用的原因詳解
這篇文章主要介紹了SQL Server2008 Order by在union子句不可直接使用的原因詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
win2008 r2安裝SQL SERVER 2008 R2 不能打開1433端口設(shè)置方法
這篇文章主要介紹了win2008 r2安裝SQL SERVER 2008 R2 不能打開1433端口設(shè)置方法,需要的朋友可以參考下2017-01-01
SqlServer2008 數(shù)據(jù)庫同步的兩種方式(發(fā)布、訂閱使用方法)
這篇文章主要介紹了通過發(fā)布訂閱的方式實現(xiàn)數(shù)據(jù)庫之間的同步操作,需要的朋友可以參考下2014-08-08

