当我重新索引特定表时
DBCC DBREINDEX(@TableName, '',90)
我收到一个错误
级别 17,状态 2,过程 aareindex,第 21 行 [批处理开始行 0] 无法为数据库“mydatabase”中的对象“dbo.SORT 临时运行存储:422738479742976”分配空间,因为“PRIMARY”文件组已满。通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。
所以我想尝试增加 TempDb 的大小
我可以通过查看数据库属性来使用 SSMS 查看大小,但我不知道如何设置它。
[更新]
select type_desc, name, size, max_size, growth from tempdb.sys.database_files
返回
文件大小已经是 10236 Mb,Express 限制是 10 Gig 但是磁盘使用报告显示 26% 的磁盘空间未分配,40% 是数据,32% 是索引。
您不需要增加临时数据库的大小。
告诉您它无法写入您的主文件组已满(c:\path to database\mydatabase.mdf)。要么没有存储 MDF 的磁盘空间,要么更可能的原因是您的主文件组没有更多可用空间可写入。
您可以通过几种不同的方式解决这个问题
在图形用户界面中
在 SSMS 中:
SQL 变更语句
如果您的用户数据库
data file size
达到其限制(Express Edition 中为 10Gb)但 26% 的磁盘空间未分配,您可以尝试使用in来创建rebuild
索引。sort
tempdb
DBCC DBREINDEX
isdeprecated
并且没有理由使用 inSQL Server 2017
,并且 withalter index..rebuild
你可以表明你想要执行sort
intempdb
:当你
rebuild
一个索引时,你首先需要space
构建你的副本index
(并且这个空间将分配在你的db
)并且构建它你还需要空间来做sort
,这个空间可以分配在tempd
. 在您的情况下,错误清楚地表明您的数据库中没有space
可做sort
的事情,所以如果sort
将在tempdb
.您可以在此处阅读更多信息:SORT_IN_TEMPDB 索引选项