Sql-Server

“PRIMARY”文件組已滿。如何在 SQL Server Express 2017 中增加 temdb 大小?

  • October 7, 2019

當我重新索引特定表時

DBCC DBREINDEX(@TableName, '',90) 

我收到一個錯誤

第 17 級,狀態 2,程序 aareindex,第 21 行

$$ Batch Start Line 0 $$ 無法為數據庫“mydatabase”中的對象“dbo.SORT 臨時執行儲存:422738479742976”分配空間,因為“PRIMARY”文件組已滿。通過刪除不需要的文件、刪除文件組中的對象、向文件組添加其他文件或為文件組中的現有文件設置自動增長來創建磁碟空間。

所以我想嘗試增加 TempDb 的大小

我可以通過查看數據庫屬性來使用 SSMS 查看大小,但我不知道如何設置它。

$$ Update $$

select type_desc, name, size, max_size, growth from tempdb.sys.database_files

返回

這些結果

文件大小已經是 10236 Mb,Express 限制是 10 Gig 但是磁碟使用報告顯示 26% 的磁碟空間未分配,40% 是數據,32% 是索引。

文件大小已經是 10236 Mb,Express 限制是 10 Gig

如果您的使用者數據庫data file size達到其限制(Express Edition 中為 10Gb)但 26% 的磁碟空間未分配,您可以嘗試使用in來創建rebuild索引。sort``tempdb

DBCC DBREINDEXisdeprecated並且沒有理由使用 in SQL Server 2017,並且 withalter index..rebuild你可以表明你想要執行sortin tempdb

alter index your_index on your_table rebuild
with (sort_in_tempdb = on, fillfactor = 90);

當你rebuild一個索引時,你首先需要space建構你的副本index(並且這個空間將分配在你的db)並且建構它你還需要空間來做sort,這個空間可以分配在tempd. 在您的情況下,錯誤清楚地表明您的數據庫中沒有space可做sort的事情,所以如果sort將在tempdb.

您可以在此處閱讀更多資訊:SORT_IN_TEMPDB 索引選項

引用自:https://dba.stackexchange.com/questions/250391