![SQL Server 2005 TempDB 维护](https://linux22.com/image/523047/SQL%20Server%202005%20TempDB%20%E7%BB%B4%E6%8A%A4.png)
我正在使用 SQL Server 2005 数据库,该数据库在 TempDB 的 1 个文件组中有 8 个文件。第一个文件的初始大小为 8MB,其他 7 个文件为 2GB。此数据库是一个报告数据库,它每晚都从 SSIS 包中填充。包和报告使用了很多临时表。
这些文件已增长到大约 300GB,均匀分布。它设置为无限制地增长 200MB。TempDB 未备份且位于 SAN 上。
我读到过,您不应该在 TempDB 上使用 SHRINKDATABASE 或 SHRINKFILE。在这种情况下,执行维护的正确方法是什么,以确保我们不会耗尽磁盘空间并保持 TempDB 精简。
感谢您的任何建议和知识。
答案1
这是文章307487微软就此发表了看法。
它可以归结为几种基本方法:
- 重新启动 SQL 实例
- 使用 DBCC SHRINKDATABASEUse DBCC SHRINKDATABASE
- 使用 DBCC SHRINKFILEUse DBCC SHRINKFILE
正如您所知,所有这些都存在问题,但我不确定有什么方法可以巧妙地执行此任务,因为您实际上是在处理实例中最重要的数据库之一。如果您有能力关闭实例几分钟,我认为这将是最好的选择。
请记住,如果您的 tempdb 一开始就变得这么大,那么很有可能它会再次达到这个规模。如果这是一个主要问题,您应该调查 tempdb 为何变得如此之大并制定相应的计划。人们抱怨收缩操作的主要原因是,除非出现错误,否则数据库往往会增长到所需的大小。这可能不适用于您,但这只是我针对任何有关数据库收缩的问题给出的一般免责声明。