SQL Server提示錯誤:未能為數(shù)據(jù)庫***中的對象***分配空間,原因是文件組PRIMARY已滿。如何解決?
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
服務(wù)器使用MS SQL SERVER 2008R2,最近經(jīng)常出現(xiàn)無法新增信息的錯誤。查看日志后發(fā)現(xiàn)嚴(yán)重錯誤提示:未能為數(shù)據(jù)庫'***'中的對象'***'分配空間,原因是文件組'PRIMARY'已滿。 針對此問題,可按以下步驟排查與解決: 一、問題排查 1.檢查磁盤剩余空間 -檢查磁盤剩余空間是否足夠。如果沒有磁盤剩余空間,則需要清理磁盤,騰出空間。 2.檢查磁盤分區(qū)格式 -如果是FAT16格式,數(shù)據(jù)文件最大只能是2G;如果是FAT32格式,數(shù)據(jù)文件最大只能是4G。改為NTFS分區(qū)則沒有這種限制。 3.檢查數(shù)據(jù)庫文件大小限制 -通過企業(yè)管理器,右鍵數(shù)據(jù)庫,選擇“屬性”,再查看“文件增長限制”。如果有限制大小,取消限制。 4.檢查SQL版本 -如果使用MSDE,則限制了數(shù)據(jù)文件最大是2G。 5.檢查TEMPDB空間占用情況 -該臨時數(shù)據(jù)庫應(yīng)該經(jīng)常清理。 二、問題解決 1.調(diào)整數(shù)據(jù)庫文件及日志的最大文件大小 -打開企業(yè)管理器,右鍵報錯的數(shù)據(jù)庫,選擇“屬性”,發(fā)現(xiàn)常規(guī)標(biāo)簽頁的可用空間顯示只有1.03M,原來是之前做過限制。一種解決方案是設(shè)置該數(shù)據(jù)庫文件以及日志的“最大文件大小”為文件增長不受限制。同時,要經(jīng)常清理數(shù)據(jù)庫日志和備份數(shù)據(jù)庫文件。 2.為primary組添加新的數(shù)據(jù)文件 -可以使用語句“alter database庫名add file(NAME =邏輯文件名,FILENAME = c:實際文件名.ndf)”為primary組添加新的數(shù)據(jù)文件來解決問題。 3.壓縮日志及數(shù)據(jù)庫文件的方法 -清空日志:使用“DUMP TRANSACTION庫名WITH NO_LOG”。 -截斷事務(wù)日志:使用“BACKUP LOG數(shù)據(jù)庫名WITH NO_LOG”。 -收縮數(shù)據(jù)庫文件 -通過企業(yè)管理器操作:右鍵要壓縮的數(shù)據(jù)庫,選擇“所有任務(wù)”-“收縮數(shù)據(jù)庫”-“收縮文件”,選擇日志文件或數(shù)據(jù)文件,在收縮方式里選擇收縮至XXM(這里會給出一個允許收縮到的最小M數(shù),直接輸入這個數(shù),確定即可)。 -也可以使用SQL語句來完成:收縮數(shù)據(jù)庫使用“DBCC SHRINK DATABASE(客戶資料)”;收縮指定數(shù)據(jù)文件(1是文件號,可通過“select * from sysfiles”查詢到)使用“DBCC SHRINKFILE(1)”。 -最大化縮小日志文件(此方法有風(fēng)險) -分離數(shù)據(jù)庫:企業(yè)管理器-服務(wù)器-數(shù)據(jù)庫-右鍵-分離數(shù)據(jù)庫。 -在我的電腦中刪除LOG文件。 -附加數(shù)據(jù)庫:SSMS控制臺-服務(wù)器-數(shù)據(jù)庫-右鍵-附加數(shù)據(jù)庫。此方法將生成新的LOG,大小只有500多K。也可以使用代碼,如分離pubs:“EXEC sp_detach_db @dbname = pubs”,刪除日志文件后再附加:“EXEC sp_attach_single_file_db @dbname = pubs,@physname = c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf”。不過此步驟不安全,有可能損壞數(shù)據(jù)庫或丟失數(shù)據(jù),一般不建議使用。 4.設(shè)置自動收縮 -通過企業(yè)管理器操作:企業(yè)管理器-服務(wù)器-右鍵數(shù)據(jù)庫-屬性-選項-選擇“自動收縮”;也可以使用SQL語句設(shè)置:“EXEC sp_dboption數(shù)據(jù)庫名, autoshrink, TRUE”。 5.限制日志增長 -通過企業(yè)管理器操作:企業(yè)管理器-服務(wù)器-右鍵數(shù)據(jù)庫-屬性-事務(wù)日志,將文件增長限制為xM(x是允許的最大數(shù)據(jù)文件大?。?;也可以使用SQL語句設(shè)置:“alter database 數(shù)據(jù)庫名modify file(name =邏輯文件名,maxsize = 20)”。不過如果日志達到上限,則以后的數(shù)據(jù)庫處理會失敗,在清理日志后才能恢復(fù),一般不建議這樣設(shè)置。 6.一種更簡單的解決方法 -右鍵數(shù)據(jù)庫屬性窗口-故障還原模型-設(shè)為簡單。 -右鍵數(shù)據(jù)庫所有任務(wù)-收縮數(shù)據(jù)庫。 -右鍵數(shù)據(jù)庫屬性窗口-故障還原模型-設(shè)為大容量日志記錄。 請注意:請按步驟進行操作,未進行前面的步驟,請不要做后面的步驟,否則可能損壞數(shù)據(jù)庫。 該文章在 2024/12/19 17:38:04 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |