![当 tempdb 无法继续增长时会发生什么?](https://linux22.com/image/538567/%E5%BD%93%20tempdb%20%E6%97%A0%E6%B3%95%E7%BB%A7%E7%BB%AD%E5%A2%9E%E9%95%BF%E6%97%B6%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我遇到一个问题,一个设置为无限制增长的 tempdb 数据库用完了所有可用磁盘空间(是其标准的 10 倍)。我正在考虑设置一个最大大小限制,一个大一点但不是所有的空间。
如果查询将 tempdb 推至极限,我希望耗尽空间的查询将被终止并释放空间,从而使其他一切正常运行。这种情况可能发生吗?还是 SQL Server 会完全停止?
谢谢您的任何回答。
答案1
有一篇好文章这里关于这个话题 (大约占页面的 3/4)。以下是摘录:
在此示例中,查询运行了 3 分钟,然后我们达到 200MB 的文件大小限制,如图 25 所示,并收到文件组已满的错误。
此时,查询显然会失败,其他需要使用 TempDB 的查询也会失败。SQL Server 仍可正常运行,但只要临时表 #HoldAll 存在,TempDB 就会保持填充状态。
作为 DBA,您有三种选择:
- 重新启动 SQL Server。
- 尝试缩小 TempDB 数据库。
- 找到错误的查询并将其消除。