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