这可能是一个非常基本的问题,但您如何事先确定大型操作是否最终会使用数据库日志或tempdb空间?SQL Server - Tempdb与数据库日志的使用
例如,我做过的一个大型插入/更新操作使用了数据库日志,因此我们需要使用SSIS &批量操作,因此空间不会用完,因为脚本中的所有更改都必须一次部署。
所以现在我正在处理一个大规模的删除操作,这将会把日志填满10次。因此,我创建了一个脚本来检查数据库日志文件使用的空间,并以较小的批次删除行,并且一旦日志文件足够大,脚本就会中止,然后在第二天从该点继续(允许正常使用情况可以继续,直到下一次备份,而不会有日志空间不足的风险)。
现在,而不是填写日志,后者查询开始填写tempdb。 Tempdb数据文件,而不是日志文件,具体。所以我认为这是一个巨大的漏洞,我理解这两个应该是。 :)
感谢您的任何建议!
编辑:
为了澄清,这里的问题是,为什么第一个例子中使用的数据库的日志,而后者使用tempdb的数据文件,存储的变化?一般来说,通过哪种逻辑将DML操作存储到tempdb或log?正常情况下,日志应该存储所有数据库更改,而tempdb仅用于在操作期间显式请求(即临时对象)或服务器耗尽内存时存储处理的数据,对吗?
你的表是否有索引?在任何批量操作之前,您应该删除索引,然后在批量操作后重新创建。 – vasin1987
嘿,编辑了这个问题。批量操作工作正常,在这里没有关注的索引。目前的问题是无法用批量操作处理的删除操作,由于某种原因,它正在使用tempdb空间而不是db log,因为我认为它应该。 :) – Kahn