【问题标题】:insufficient disk space in filegroup 'DEFAULT'文件组“DEFAULT”中的磁盘空间不足
【发布时间】:2015-11-03 19:18:08
【问题描述】:

我正在执行结构中的 sql

SELECT “about 30 fields”
FROM “9 tables with around 10 INNER JOINs (two of the tables have around 13 million rows)”
WHERE “one LIKE string matching and two equals clauses”

并得到错误

无法为数据库“TEMPDB”分配新页面,因为 文件组“DEFAULT”中的磁盘空间不足。创建必要的 通过在文件组中删除对象,将其他文件添加到 文件组,或为现有文件设置自动增长 文件组。

System Databases Maxsize 中的 tempdb 被限制在 250G 左右,所以我尝试编辑“tempdb”的 Maxsize。好像我没有这个特权。

用户无权更改数据库“tempdb”,该数据库 不存在,或数据库未处于允许访问的状态 检查。 (Microsoft SQL Server,错误:5011)

我还检查了我正在使用的数据库的信息(不是数据库“tempdb”)。行数据的 Maxsize 为“无限空间”

有什么解决办法吗?比如写sql脚本,可以批量增量获取sql结果?

注 1:我尝试先在 Python 中使用 sqlalchemy 引擎运行脚本。然后在 SQL Server Management Studio 中尝试。两种情况下都存在错误。

注意2:如果我将WHERE子句中的LIKE字符串匹配(LIKE N'% targetword')更改为equals子句,则查询运行良好。

【问题讨论】:

  • 在 sqlserver 的某些 api 中使用这个查询怎么样?它是在没有消息的情况下假脱机整个数据吗?
  • 如果您需要帮助如何减少 tempdb 的使用,您应该发布实际的查询和执行计划。
  • 哇.. 来自 9 个表,只有 2 个等于。看起来这 1300 万会增长到数十亿
  • 当您开始使用 250GB 空间最大化 tempdb 时,是时候评估您的查询并查看它是否真的在做您想要的。
  • 所有这些索引扫描意味着您的查询是 nonSARGable。换句话说,它不能使用索引,而是强制 sql 查看每一行以确定是否应该包含该行。当您拥有数百万行数的表时,这相当于大量使用 tempdb。除非您可以发布查询,否则我们只能猜测,因此无法为您提供帮助。

标签: python sql sql-server database sqlalchemy


【解决方案1】:

硬盘或 lun,没有更多的物理空间。你已经填满了驱动器。如果需要,您可以将另一个驱动器上的文件添加到文件组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 2013-10-09
    • 2015-12-04
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多