我的SQL Server Standard 11.0.6020.0版本出现问题。我第一次注意到这个问题大约是在一个半月前。实际情况是,当我在服务器上运行日常维护时,作业将永远运行。以下是将执行数天的命令示例:
ALTER INDEX [IX_NonClustedIndex] ON [Database].[dbo].[Table] REBUILD WITH
(SORT_IN_TEMPDB = ON, ONLINE = OFF)
现在,这句话通常很快就完成了:
开始时间=2018-12-05 02:00:01.057
结束时间=2018-12-05 02:00:01.673
但出于某种原因,它突然出现了问题。我在谷歌上搜索了这个问题,发现的唯一线索是某个地方的一篇文章,说tempdb可能已经损坏。所以,我停止了服务。删除了我的tempdb,然后重新启动了服务器。测试了alter index语句和BAM!几秒钟内完成。以为我已经解决了问题;我去做我的事。修复程序持续了大约4周后才重新开始。重复了我之前所做的,我认为我会再过几周,但没有。这次修复只持续了几天。
知道是什么导致了我的问题,或者我需要调查什么吗?提前谢谢。
**服务器设置**这是在Windows Server 2012 R2 Standard上。2个CPU,每个CPU有8个核心。192 GB内存。tempDB有20个数据文件,每个文件的大小为5GB。
我终于想好了如何解决这个问题,但我不知道是什么导致了这个问题。在进行维护步骤之前,我运行以下DBCC命令:
DBCC FREEPROCCACHE
DBCC FREESYSTEMCACHE ('tempdb')
我的想法是缓存的执行计划导致索引碎片整理溢出。