SQL查询失败磁盘空间不足
消息 1101,第 17 级,状态 10,第 12 行 由于文件组“DEFAULT”中磁盘空间不足,无法为数据库“TEMPDB”分配新页。通过删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间。
用简单的英语来说这是什么意思。
Msg 1101, Level 17, State 10, Line 12
Could not allocate a new page for database 'TEMPDB' because of insufficient disk space in filegroup 'DEFAULT'. Create the necessary space by dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.
What does this mean in plain English.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我发现 TempDB 如此爆炸性增长的正常原因是一个查询,无论是临时查询还是存储过程中的查询,其中都有意外的多对多联接,有些人将其称为“意外交叉联接” 。在幕后,它可以创建数十亿条内部行,这些行最终位于 TempDB 中的“工作”表中。
解决方法不是简单地分配更多磁盘空间。修复方法是找到导致问题的查询并修复它。否则,您将陷入必须重新启动 SQL Server 等永无休止的循环。
并且,不...您不必检查 TempDB 是否处于“SIMPLE”恢复模式,因为您不能将其设置为其他任何内容。尝试一下看看。
I've found that the normal cause of such explosive growth of TempDB is a query, either ad hoc or in a stored procedure, that has an unexpected many-to-many join in it that some refer to as an "Accidental Cross Join". Behind the scenes, it can create litterally billions of internal rows that end up living in "work" tables that live in TempDB.
The fix isn't to simply allocate more disk space. The fix is to find which query is the cause of the problem and fix it. Otherwise, you'll be stuck in a never ending cycle of having to restart SQL Server, etc, etc.
And, no... you don't have to check to see if TempDB is in the "SIMPLE" recovery mode because you can't set it to anything else. Try it and see.
这意味着您的 tempdb 数据库已满,
您可以
数据库
请参阅 处理无法为数据库“TEMPDB”分配新页的问题。文件组 DEFAULT 错误消息中没有更多可用页面了解更多详细信息
It means your tempdb database filled up
you can
database
See Dealing with the could not allocate new page for database 'TEMPDB'. There are no more pages available in filegroup DEFAULT error message for more details